No ar, uma nova história sobre os projetos de graduação dos alunos de nossos projetos educacionais. Desta vez apresentaremos quatro trabalhos que foram apresentados na defesa conjunta do segundo semestre do programa principal do Technopark nas disciplinas "Desenvolvimento Front-end", "Desenvolvimento de Web Services on Go" e "Design de Interface". Publicações anteriores: um , dois , três .
É a primeira vez que alunos que defendem projetos são expostos a essas tecnologias. O projeto tem duração de um semestre, o objetivo do artigo é mostrar o processo educativo e os resultados do trabalho dos alunos.
Virus Music
É um serviço de música da Internet para streaming de música sem fazer download para o seu dispositivo. A página principal contém uma seleção de faixas do dia, bem como uma pequena lista de artistas.

Se você clicar em um artista, uma lista de suas faixas será aberta. Você pode se inscrever em seus artistas favoritos para não perder seus novos lançamentos e pode curtir suas faixas e álbuns favoritos. Para a comodidade de navegar pela base de dados de música, existe uma pesquisa simultânea por intérpretes, faixas e álbuns. Listas de reprodução podem ser criadas. No perfil, você pode ver suas faixas favoritas, álbuns curtidos e inscrições de artistas, além de gerenciar suas playlists. Para tornar o serviço mais divertido, os caras adicionaram a capacidade de customizar as cores da interface. E a própria interface é adaptada para dispositivos móveis com diferentes tamanhos de tela - o espírito da época.

Durante o trabalho em projetos, os caras tiveram que encontrar compromissos quando não concordaram em algumas decisões. Em busca de uma opção adequada, mudamos dois motores de template e dois pós-processadores. Também decidimos implementar MVC no frontend antes de descobrir a essência dessa abordagem, por causa da qual mais tarde tivemos que refazer muito. O back-end usa uma arquitetura "limpa".
O serviço é escrito em Go e JavaScript (com Web Workers para executar JavaScript de forma assíncrona), usando a API Rest e o serializador EasyJSON. PostgreSQL e Redis são usados para armazenar dados, e a biblioteca gorm é usada para trabalhar com eles. Os microsserviços se comunicam entre si por meio do gRPC. O servidor da Web é Nginx. Texto datilografado é usado. CI / CD é construído em cima de Github Actions e MCS. Também aplicou SharingAPI (para compartilhar links) e coletor Webpack.
Para desenvolver o serviço, você precisa do mais importante: uma biblioteca decente de música. Os autores também planejam coletar estatísticas sobre escuta, a fim de criar um sistema de recomendação baseado nas preferências do usuário.
Equipe do projeto: Margarita Boyko, Dmitry Rybakov, Natalia Klimova, Nikita Panev.
Vídeo com proteção do projeto .
Kino On
Os caras fizeram um site para encontrar informações sobre filmes e programas de TV . Eles adicionaram a capacidade de criar listas de reprodução e deixar comentários. O site possui seleções temáticas de filmes e séries, há uma pesquisa de texto completo no banco de dados, com a possibilidade de selecionar gêneros, anos de lançamento, atores.


Uma das funções principais é compilar uma lista de imagens semelhantes para um filme definido pelo usuário. Os caras queriam criar um produto completo, então implementaram a compilação de coleções sem um aprendizado de máquina sofisticado. Em vez disso, para um determinado filme, são selecionados os trabalhos que os usuários do site costumam incluir em uma lista de reprodução com uma determinada. Ou seja, quanto mais frequentemente dois filmes terminam na mesma lista de reprodução, mais provável é que sejam semelhantes. Embora, "semelhante" seja o termo errado. Em vez disso, são "filmes dos quais você também gostará com certa probabilidade". É o mesmo com programas de TV.

Além disso, os alunos que utilizaram a API Web Share fizeram a função de enviar links para filmes de seu interesse. Feito para a beleza, com a capacidade de anexar fotos e descrições.
O back-end é inteiramente escrito em Go usando os princípios de uma arquitetura "limpa". Ajudou muito na estruturação do projeto. As ações do Github rastreiam cada push para o branch master. Os testes são executados automaticamente e, se tudo estiver em ordem, o projeto é colocado em contêineres do Docker e enviado ao Dockerhub. Em seguida, eles são retirados do servidor e iniciados. O back-end é um servidor API executado em HTTP e HTTPS. A primeira vez que um cliente entra no site, ele recebe um arquivo com o código do cliente. Automatizamos a inicialização do servidor da web nginx usando o Ansible.
Usando o plugin Web Scrapper do Google Chrome, os caras coletaram informações sobre filmes e programas de TV. Os dados na forma de arquivos csv foram processados com um script Python, transformados em consultas SQL válidas e o banco de dados foi instalado. A Nginx SSI é responsável por anexar fotos e descrições a links de filmes e programas de TV. HTTP 3.0 é usado como protocolo, para isso tivemos que reconstruir o Nginx com novos módulos e bibliotecas, escrever muitos cabeçalhos.
Equipe do projeto: Andrey Zubkov, Konstantin Pronin, Alisa Seledkina, Oleg Elizarov.
Vídeo com proteção do projeto .
Drello
Este é um gerenciador de tarefas multifuncional . O princípio aplicado no Drello provavelmente é familiar para você: o usuário coleta e edita suas tarefas em uma página de quadro separada. Na tela principal, o usuário visualiza seus painéis, bem como aqueles para os quais foi convidado. Vários modelos são fornecidos para a criação rápida de placas típicas.

As tarefas são apresentadas na forma de colunas, cada uma refletindo um estágio separado da tarefa.

A tela de tarefas contém uma descrição, tags de categoria, listas de verificação, comentários explicativos e arquivos anexados.

As tarefas são movidas entre as colunas simplesmente arrastando e soltando.

São notificações em tempo real, com opção de desligá-las ou silenciá-las. Você pode enviar um link de convite para se conectar aos painéis de outros usuários.

Todo o back-end é escrito em Go e tem uma arquitetura de microsserviço. Os microsserviços se comunicam no formato protobuf via gRPC. O aplicativo é coberto por monitoramento na forma de um pacote de Prometheus e Grafana. A biblioteca zap é usada para registro. O principal armazenamento de dados é PostgreSQL, o armazenamento de arquivos e avatares é a Amazon. As sessões são armazenadas no Memcache. Para se comunicar com o frontend, são usados o roteador Echo, o protocolo HTTPS 2.0 e o serializador de dados EasyJSON. A estrutura Gorm é usada para trabalhar com o banco de dados. O aplicativo também é protegido contra ataques CSRF, XSS e injeção de SQL. O frontend é escrito em JavaScript puro, usando o padrão MVC e o mecanismo de template Fest. Usamos webpack como coletor, transportamos usando Babel, distribuímos conteúdo estático por meio de Nginx e procuramos solicitações para o backend.
A parte dianteira:https://github.com/frontend-park-mail-ru/2020_1_SIBIRSKAYA_KORONA
Backend: https://github.com/go-park-mail-ru/2020_1_SIBIRSKAYA_KORONA
Equipe do projeto: Roman Gavrilenko, Alexander Lebedev, Timofey Razumov, Anton Chetverov ...
Vídeo com proteção do projeto .
eLoyalty
E o último projeto em nossa coleção é um designer de cartão de fidelidade para a Apple Wallet. Os caras adoram ir a cafeterias, mas não gostam de andar por aí com cartões de papelão com selos, para os quais dão café de graça. Resolveram fazer um lindo cartão na Wallet para que qualquer dono de uma pequena cafeteria pudesse entender seu construtor, com a capacidade de criar um design e lógica para um sistema de fidelidade para uma cafeteria. Além disso, os cartões eletrônicos podem lembrar o cliente quando ele estiver caminhando nas proximidades do café, avisá-lo sobre promoções e coletar contatos dos visitantes.

O projeto é construído em uma arquitetura de microsserviço usando o protocolo GRPC. As senhas são hash. Os contêineres Docker são usados e o monitoramento e os alertas são baseados no Prometheus e no Grafana. Os caras também tiveram que estudar de forma independente a API da Apple Wallet - uma tecnologia que permite a emissão e manutenção de cartões eletrônicos para a Apple Wallet: mudar seu design, enviar notificações e assim por diante.
Equipe do projeto: Dmitry Gulyachenkov, Alexander Averkiev, Sergey Petrenko, Dmitry Boldin.
Vídeo com proteção do projeto .
Em um dos posts a seguir, falaremos sobre projetos de graduação em desenvolvimento C ++. Você pode ler mais sobre nossos projetos educacionais neste link . E com mais frequência vá ao canal Technostream , regularmente aparecem novos vídeos de treinamento sobre programação, desenvolvimento e outras disciplinas.