Wróć do projektów
Aplikacja
AM Tracker
Self-hostowany tracker anime, mangi, manhwy i manhui.
- Rok
- 2026
- Status
- Online
- Rola
- Solo: projekt, front end, back end, baza danych, hosting.
Dla osób, które wolą trzymać swoją bibliotekę u siebie, niż ją wynajmować: wszystko, co oglądają i czytają, w jednym miejscu, rzut oka na to, co jest w trakcie, i powiadomienie, gdy wyjdzie kolejny odcinek albo rozdział. Stoi na moim sprzęcie, a nie na czyjejś platformie.
Technologie
- Next.js 16
- React
- TypeScript
- Prisma 6
- MySQL
- NextAuth
- Tailwind CSS
- Framer Motion
- Proxmox
Zastosowanie
- Jedna biblioteka z czterech katalogów: wyszukiwarka scala AniList, MyAnimeList, MangaDex i MangaUpdates, usuwa duplikaty i dodaje tytuł z pełnymi danymi jednym kliknięciem.
- Postęp jednym dotknięciem. Sama zauważa koniec serii i liczy ponowne przejścia jako osobne cykle.
- Mówi, kiedy wyjdzie kolejny: anime co do godziny z AniList, manga i manhwa z nocnego przeglądu, bo dla nich nikt harmonogramu nie publikuje.
- Co wychodzi dzisiaj, listą albo miesiącem naraz, z własnej półki lub ze wszystkiego, co jest.
- Dwa składniki logowania z zaufanymi urządzeniami, każde odwoływalne osobno, więc zgubiony telefon to nie zgubione konto.
- Wciągnięcie lat historii z MAL-a albo AniList i wyciągnięcie całości z powrotem, kiedy tylko chcesz.
- Podgląd tego, co oglądają znajomi, i dodanie czegoś do siebie prosto z ich profilu.
Jak jest zrobione
- Next.js 16 na App Routerze z Turbopackiem, Prisma 6 na MySQL, NextAuth na tokenach JWT. Self-hostowane w kontenerze LXC pod Proxmoxem, ruch przez Cloudflare Tunnel, proces pilnowany przez PM2.
- Strony użytkownika są force-dynamic, a ciężkie publiczne feedy cache'owane po stronie serwera w trybie stale-while-revalidate z oknem 5 do 15 minut i scalaniem żądań w locie, żeby stu czytelników nie ruszyło każdy z własnym zapytaniem.
- AniList odpytywany paczkami przez aliasy GraphQL, do 50 rekordów na żądanie, plus cron odświeżający status emisji i sumy co sześć godzin.
- Manga nie ma nigdzie publicznego harmonogramu, więc nocny cron przeczesuje MangaUpdates, dowiązuje nowe wpisy po tytule i buduje historię wydań, z której korzysta kalendarz.
- Sesje umierają dokładnie wtedy, kiedy powinny: passwordChangedAt i twoFactorChangedAt porównywane ze znacznikiem wystawienia tokenu, więc zmiana hasła natychmiast wywala wszystkie starsze.
- Ograniczanie ruchu w trzech warstwach, po adresie, po mailu i po koncie, każda z własnym oknem. Ostre CSP, HSTS preload, sprawdzanie bajtów nagłówka przy wgrywaniu awatara i sanitizer adresów stojący między pobieraniem a SSRF.
- Pod spodem panel operatora: pięć cronów z ostatnim wynikiem i czasem kolejnego uruchomienia, żywe health checki wszystkich czterech źródeł, trzydzieści dni logów serwera i baner na samej stronie w chwili, gdy któreś źródło padnie.
- Około 14 modeli Prisma, 40 tras API, 20 stron i 5 cronów, na czterech zewnętrznych API.

