Skip to content

Repository files navigation

ContApp PFA

Aplicație React pentru evidența veniturilor și cheltuielilor unui PFA. Datele sunt stocate într-o bază de date Neon Postgres și accesate printr-un backend API minim (Express). localStorage rămâne doar ca fallback temporar, de exemplu când backend-ul nu este pornit.

Caracteristici

  • Adaugă venituri și cheltuieli cu dată și descriere.
  • Sumar rapid: total, luna curentă și profit.
  • Grafic comparativ pe ultimele 12 luni.
  • Descrieri predefinite pentru PFA (servicii, chirie, utilități etc.).
  • Temă deschisă/închisă, salvată local.
  • Export CSV (Excel) cu datele tale.
  • Atașamente (PDF, imagini) pentru fiecare înregistrare.

Tehnologii

  • React 18 + TypeScript
  • Vite 8
  • Express + @neondatabase/serverless
  • Neon Postgres
  • CSS custom (fără framework UI)
  • Vitest + Testing Library pentru teste
  • ESLint + Prettier pentru calitatea codului

Configurare

  1. Copiază fișierul de mediu:

    cp .env.example .env
  2. Completează DATABASE_URL și VITE_API_BASE_URL în .env. Poți obține un connection string de la Neon rulând pașii de mai jos.

Baza de date Neon (prin CLI)

Proiectul folosește CLI-ul oficial neonctl pentru a crea și gestiona baza de date.

# 1. Autentificare în Neon
npm run neon:login

# 2. Creează proiectul și baza de date
npm run neon:create

# 3. Obține connection string-ul și actualizează DATABASE_URL în .env
npm run neon:connection-string

După autentificare, Neon CLI salvează local un token de acces (nu trebuie să îl copiezi manual).

Copiază textul afișat de neon:connection-string (arată ca postgresql://...) și înlocuiește valoarea lui DATABASE_URL din fișierul .env.

# 4. Rulează migrările pentru a crea tabelele
npm run db:migrate

Schema inițială se află în migrations/001_initial.sql și creează tabelele movements și attachments.

Pornire locală

Ai nevoie de două procese: backend-ul Express și aplicația Vite.

# Terminal 1 — backend API
npm run server:dev

# Terminal 2 — aplicația React
npm run dev

În dezvoltare, Vite proxy-ează cererile /api către http://localhost:3001.

Scripts utile

Script Descriere
npm run dev Server de dezvoltare cu hot reload
npm run server:dev Pornește backend-ul Express
npm run build Build de producție (dist/)
npm run preview Previzualizează build-ul de producție
npm run lint Rulează ESLint
npm run lint:fix Rulează ESLint și corectează automat unde poate
npm run format Formatează codul cu Prettier
npm test Rulează testele o singură dată
npm run test:watch Rulează testele în mod watch
npm run neon:login Autentificare în Neon CLI
npm run neon:create Creează proiectul Neon
npm run neon:connection-string Afișează connection string-ul
npm run db:migrate Aplică migrările SQL pe baza de date
npm run db:migrate Aplică migrările SQL pe baza de date

Arhitectură

src/
  App.tsx                 – container principal și stare globală
  components/             – componente reutilizabile
  hooks/useTheme.ts       – gestiunea temei
  lib/                    – utilități (calcul, formatare, storage, CSV, API)
  types.ts                – tipurile aplicației
server/
  index.ts                – aplicația Express și endpoint-urile REST
  db.ts                   – client Neon
scripts/
  migrate.ts              – runner pentru fișierele SQL din migrations/
migrations/
  001_initial.sql         – schema inițială

Note de securitate

  • Connection string-ul către Neon se află în .env; acest fișier nu este inclus în Git.
  • API-ul este deschis (fără autentificare) pentru o singură instanță de utilizator. Dacă expui aplicația public, adaugă un strat de autentificare.
  • Atașamentele sunt stocate ca base64 în Postgres; pentru fișiere foarte mari, ia în considerare un storage obiect (S3 etc.).
  • crypto.randomUUID() are fallback pentru contexte non-securizate (HTTP).

Licență

Proiect privat.

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages