Twój koszyk jest obecnie pusty!
Jak powstała ta aplikacja?
W tym wpisie pokażę Ci, jak zbudowałem aplikację do śledzenia czasu pracy (Time Tracker) używając Cursor AI. Bez klepania kodu linijka po linijce, tylko z pomocą promptów i modeli językowych. Wszystko oparte na NestJS, React, MongoDB i Dockerze. Jeśli chcesz przyspieszyć development – ten wpis jest dla Ciebie.
Czym jest Cursor AI?
Cursor AI to edytor oparty na Visual Studio Code, wzbogacony o integrację z modelami językowymi (Claude, GPT, Gemini). Działa z lokalnym kodem, zna strukturę projektu i umożliwia m.in.:
- tworzenie kodu z promptów,
- debugowanie na podstawie logów,
- refaktoryzację i poprawki AI,
- akceptowanie/wycofywanie zmian wygenerowanych przez model,
- współpracę z Dockerem i terminalem.
Oficjalna strona edytora: www.cursor.com
Stack technologiczny użyty w aplikacji
- Frontend: React + Redux + Material UI v7
- Backend: NestJS (TypeScript)
- Baza danych: MongoDB
- Docker: Konfiguracja za pomocą docker-compose
Etapy pracy w Cursor AI
1. Architektura i środowisko
Na start model generuje szkielet aplikacji i konfigurację Dockera. Prompt zawiera nazwę appki, stack i zestaw zasad (np. najpierw plan, potem kod, nie twórz ficzerów z palca itd.).
Act as IT Architect, DevOps and Developer.
Zadanie: Stwórz szkielet aplikacji na podstawie poniżej architektury usług mikroserwisowych.
Nazwa aplikacji: Time Tracker
Wymagania Docker:
Do uruchomienia lokalnie wykorzystaj docker-compose.
Nie twórz docker-compose dla produkcji.
Zadbaj o konfigurację lokalnych wolumenów.
Pliki Dockerfile mają być przygotowane zarówno do lokalnego developmentu, jak i produkcyjnego deploymentu (użyj Multi Stage Builds).
Zastosuj kompatybilność obrazów Docker --platform=linux/amd64 dla Proxy, Backend i Frontend.
Nie umieszczaj serwera proxy (Nginx ani Apache) w żadnej usłudze poza PROXY.
Ma istnieć tylko jeden serwer.
Ustal stałe nazwy kontenerów.
Wymagania aplikacji:
Wykorzystaj znane skrypty do generowania szkieletów aplikacji.
Nie twórz żadnych funkcjonalności - otrzymasz je w następnym kroku.
Rules:
Zacznij od szkieletu aplikacji, następnie utwórz konfigurację Dockera.
Najpierw opracuj plan - napisz, co, jak i dlaczego chcesz zrobić.
Utrzymuj jak najprostszą strukturę katalogów, nie twórz katalogu pośredniego.
Stwórz dokumentację w pliku readme.md
-
Proxy:
Serwer: Nginx
Nie zmieniaj adresów URL do backendu.
Backend:
Język: TypeScript
Framework: NestJS
Port: 3010
Przygotuj możliwość połączenia się z usługą Bazy danych.
Frontend:
Język: TypeScript
Framework: React, React Router, Redux
Port: 3000
UI: Material UI (v7)
Serwer Proxy: NIE
W środowisku deweloperskim uwzględnij konfigurację dla hot-reloading aplikacji React.
Baza danych:
Silnik: MongoDB
Port: 27017
2. Tworzenie funkcjonalności
Logowanie, role użytkowników, zarządzanie projektami, taski, trackowanie czasu – każda funkcja to osobny prompt. Dzięki temu kontroluję strukturę i unikam chaosu w kodzie.
Act as Developer.
Zadanie:
Na podstawie stworzonej architektury, dokumentacji @README.md i obecnego kodu bazowego opracuj funkcjonalności opisane poniżej.
Rules:
Odczytaj dokumentację aplikacji: @README.md
Najpierw przygotuj zmiany w API Backend, a następnie w aplikacji Frontend.
Konfigurację ENV utrzymuj bezpośrednio w docker-compose.yml
Przed instalacją pakietów sprawdzaj, czy nie są już zainstalowane.
Po wprowadzeniu zmian zaktualizuj dokumentację w pliku readme.md.
W dokumentacji w szczególności uwzględnij schematy adresów URL (Frontend i Backend).
Wydziel interfejsy do osobnych plików w specjalnym katalogu z interfejsami. Odczytaj potrzebne interfejsy.
We frontendzie zastosuj podział komponentów na odpowiednie podkatalogi w /src/components/ zgodnie z ich funkcją / przeznaczeniem.
Pamiętaj, że korzystamy z mongodb więc pole identyfikatora to zazwyczaj: “_id”, a nie “id”.
Używaj “class-validator” oraz “class-transformer” w kontrolerach i zawsze zmieniaj w zwracanych danych pole klucza jako “id” (NIE “_id”) w postaci stringu.
Pamiętaj, ze frontend robimy zgodnie z Material UI (v7).
Aby sprawdzić aktualną wersję API Backendu odwiedź stronę: http://localhost/api/docs-json
Korzystaj z RTK Query + custom hook + route param.
Twórz własne hooki do odpytywania danych.
Pamiętaj o aktualizacji dokumentacji API dla Swagger’a.
Twórz w backendzie moduły dla osobnych funkcjonalności.
Twórz funkcje pobierające dane w service’ach i używaj ich między modułami, zamiast pobierać dane bezpośrednio z modeli.
Pamiętaj o validacji danych po stronie API, nie tylko na froncie.
* Logowanie użytkowników
Model: User
Użytkownicy mają być podzieleni na 2 role: “user” (Zwykły użytkownik) oraz “admin” (Administrator).
Użytkownicy nie mogą się sami rejestrować.
Loginem użytkownika jest jego adres e-mail.
Administrator może dodawać i edytować użytkowników.
Administrator może zmienić status użytkownika z “active” na “inactive”.
Zwykły użytkownik może przeglądać profile innych użytkowników.
Wykorzystaj mechanizm cookies to zapisywania tokenu autoryzacyjnego.
Przygotuj skrypt tworzący pierwotnego administratora podczas inicjalizacji aplikacji.
* Profil użytkownika
Każdy użytkownik może po zalogowaniu wejść w swój profil i edytować imię, nazwisko oraz stanowisko.
3. Stylowanie i UI/UX
Używam tylko Material UI v7. Promptuję model tak, aby nie używał bootstrapa, ustalam ciemny motyw, konkretne fonty i wygląd layoutów (np. menu w topbarze, avatar z dropdownem itd.).
Act as Designer and Frontend Developer.
Zadanie: Dokonaj zmian wizualnych, UI, UX w interfejsie aplikacji zgodnie z poniższym opisem.
Rules:
* Stosuj Material UI (v7)
* Jeśli potrzebna jest edycja API backendu to zatrzymaj działanie i napisz, jaki endpoint jest potrzebny.
* Jeśli masz problem z API backendu sprawdź najpierw dokumentację pod adresem: http://localhost/api/docs-json
* Wygląd interfejsu powinien być minimalistyczny
* Korzystaj z RTK Query + custom hook + route param.
4. Debug i refaktoryzacja
Cursor AI koloruje zmiany. Błędy w kodzie są wykrywane i naprawiane przez AI lub przeze mnie (np. ręcznie triggerując poprawkę przez prompt). Używam rollbacków, checkpointów i logów z kontenerów.
Czy Cursor AI ma sens?
Tak, jeśli:
- tworzysz MVP lub chcesz szybko prototypować,
- znasz podstawy stacku i chcesz przyspieszyć codzienny workflow,
- szukasz narzędzia, które naprawdę działa z AI, nie tylko udaje „smart IDE”.
Nie – jeśli liczysz, że zrobi wszystko za Ciebie bez kontekstu i złożysz produkcyjną apkę w 10 minut. To narzędzie, nie magia.
Podsumowanie
Cursor AI to jedno z najbardziej użytecznych narzędzi AI-first dla programistów. Jeśli chcesz zautomatyzować 50–70% procesu tworzenia aplikacji i nadal mieć kontrolę nad kodem – spróbuj. Film u góry pokaże Ci, jak to wygląda w praktyce.
W kolejnym wpisie zajmę się testowaniem i deploymentem tej aplikacji. Jeśli chcesz być na bieżąco – subskrybuj i dołącz do newslettera.