DNAStrands
Moja praca licencjacka: aplikacja webowa, która koduje informacje w projektach sekwencji DNA. Jedyne repozytorium na tej stronie, które można otworzyć i przeczytać.
Czym jest
DNA może przenosić dowolne informacje w tym samym czteroliterowym alfabecie, którego używa biologia, i budzi to realne zainteresowanie badaczy, bo w porównaniu z nośnikami magnetycznymi czy półprzewodnikowymi jest niezwykle gęste i trwałe. DNAStrands zamienia dane wejściowe na bity i koduje je jako sekwencje nukleotydów gotowe dla urządzenia do syntezy, a także generuje znaczniki DNA do oznaczania przedmiotów fizycznych.
Wokół tego jest to, czego potrzebuje prawdziwa aplikacja: rejestracja i uwierzytelnianie JWT z odświeżaniem tokenów, historia wszystkiego, co wygenerował dany użytkownik, eksport do JSON, walidowane formularze z błędami przypisanymi do pól, jasny i ciemny motyw oraz skonteneryzowane środowisko deweloperskie.
Dlaczego jest tutaj
Powstała w 2022 roku jako praca dyplomowa, więc waży mniej niż niedawna praca zawodowa. Zostaje, bo większość mojej pracy zawodowej to zamknięty kod, a to repozytorium, razem z pełną pracą dyplomową, jest tym jedynym, które osoba oceniająca może otworzyć i przeczytać.
W repozytorium widać commit ze stycznia 2025 roku. To była poprawka błędu: ekran historii użytkownika wyświetlał się niepoprawnie, więc go naprawiłem i przy okazji zaktualizowałem README. Nic więcej się nie zmieniło.
To proof of concept, a nie produkt, który wypuściłbym do prawdziwych użytkowników. Samo kodowanie informacji w DNA działa od początku do końca, ale aplikacja nie jest zabezpieczona na poziomie, jakiego wymagałbym od czegoś publicznie dostępnego: ostatni rozdział pracy opisuje, co trzeba by zrobić, żeby była w pełni bezpieczna, i wprost mówi, że nic z tego nie zostało wdrożone.
Aplikacja nie jest już hostowana i w obecnym stanie repozytorium się nie uruchomi. Kod i praca dyplomowa są do przeczytania, a nie do wypróbowania.
Co zrobiłbym inaczej
To React z 2022 roku: ręcznie pisany stan formularzy i pobieranie danych w efektach. Dziś używałbym wszędzie hooków, biblioteki do stanu serwera, walidacji opartej na schemacie, napisanej raz dla obu stron, i wbudowanych w React prymitywów formularzy do obsługi stanu wysyłki. Wybór Django i JWT bym zachował.