mediaflip.io

Stos Technologiczny

Przegląd nowoczesnych technologii napędzających archtekturę mediaflip.io.

Zbudowany dla wydajności, skalowalności i bezpieczeństwa w świecie danych.

Next.js 15

Renderowanie stron po stronie serwera i trasy API

PostgreSQL & Prisma

Przechowywanie danych aplikacji za pomocą relacyjnej bazy danych

groq

Groq

API do uruchamiania modeli językowych wykorzystywanych m.in. do analizy i moderacji treści

Redis & BullMQ

Pamięć podręczna i kolejkowanie zadań w tle

Chakra UI v3

Biblioteka elementów interfejsu użytkownika

TypeScript

Język programowania zapewniający kontrolę typów w kodzie

tRPC & React Query

Komunikacja i przesyłanie danych między serwerem a przeglądarką

nextauth

NextAuth.js

Uwierzytelnianie i logowanie użytkowników

zustand

Zustand

Zarządzanie stanem aplikacji w pamięci przeglądarki

Framer Motion

Obsługa animacji interfejsu

Server-Sent Events

Asynchroniczna komunikacja i powiadomienia w czasie rzeczywistym oparta na Redis Pub/Sub

gorse

Gorse

Silnik rekomendacji treści opartej na Go

Szczegóły Techniczne

Kluczowe filary architektury:

Skalowalność

Bezpieczeństwo

Wydajność

Serwis działa na bazie Next.js 15, co pozwala na generowanie stron po stronie serwera (SSR) i ich optymalizację pod kątem wyszukiwarek (SEO). Interfejs użytkownika został napisany w TypeScript przy użyciu biblioteki Chakra UI v3 w celu zapewnienia responsywnego wyglądu na telefonach i komputerach.

Dane są zapisywane w bazie PostgreSQL przy użyciu Prisma ORM. Redis obsługuje kolejkowanie zadań w tle w BullMQ. Dodatkowo w architekturze wykorzystano Server-Sent Events (SSE) we współpracy z Redis Pub/Sub do przesyłania powiadomień w czasie rzeczywistym.

Automatyczna moderacja treści i przypisywanie tagów do memów są obsługiwane przez modele językowe uruchamiane przez API Groq. Stan aplikacji w przeglądarce jest kontrolowany przez bibliotekę Zustand. Całość została skonteneryzowana w Dockerze i wdrożona w chmurze z Docker Swarm wraz z automatyzacją wdrożeń przez GitHub CI/CD.

Rafał Łukawski