# Verto Verto is a full-stack release tracker built with React + Vite on the frontend and NestJS + MySQL on the backend. Users can sign up, authenticate with JWTs, manage client/environment release metadata, and customize their personal settings (profile, avatar, password) without leaving the workspace. ## Repo layout - `backend/` – NestJS + TypeORM API (JWT auth, releases CRUD, MySQL integration) - `frontend/` – React + Vite dashboard (shown below) ## Getting started 1. Install dependencies ```bash (cd backend && npm install) (cd frontend && npm install) ``` 2. Configure environment variables The backend now looks for three `.env*` files: - `backend/.env` – production defaults (gitignored). Copy `backend/.env.example` and fill in real secrets. - `backend/.env-development` – used whenever `NODE_ENV` is unset or `development`. Update this file for local dev. - `backend/.env-test` – used when `NODE_ENV=test`, e.g., during Jest/e2e runs. ```bash cp backend/.env.example backend/.env # production / deployment secrets ``` Ensure a MySQL database (default `verto`) exists and the configured user has permissions. Create separate schemas (`verto_dev`, `verto_test`) if you keep the dev/test defaults. `NODE_ENV` controls which file loads (defaults to `development`); Jest sets `NODE_ENV=test` automatically, and `NODE_ENV=production npm run start:prod` will read from `.env`. 3. Run the dev servers (in separate terminals) ```bash (cd backend && npm run start:dev) # http://localhost:3000 (cd frontend && npm run dev) # http://localhost:5173 ``` 4. Optionally build/preview the frontend ```bash (cd frontend && npm run build) (cd frontend && npm run preview) ``` ## Project structure ``` frontend/src/ ├─ components/ │ ├─ AppContent.tsx │ ├─ auth/ │ ├─ common/ │ └─ dashboard/ ├─ contexts/ ├─ services/ ├─ styles/ ├─ types/ └─ utils/ ``` - `contexts/` keeps isolated auth + release providers. - `services/` holds API + session helpers. - `components/` are split by feature (auth vs dashboard) with smaller presentational children. - `utils/` centralizes data shaping helpers (flattening/grouping releases, exporting JSON, etc.). - `styles/` includes shared tokens plus CSS modules per component for maintainable styling. ## Features - Email + password auth persisted in MySQL and secured with JWTs - Add/edit/delete release metadata per client/environment with server-side validation - Invite collaborators to specific client projects via emailed signup links - Search across clients, branches, versions, and environments - JSON export of the current user's release catalog - Responsive layout with accessible modals and form semantics