2.7 KiB
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
-
Install dependencies
(cd backend && npm install) (cd frontend && npm install) -
Configure environment variables
The backend now looks for three
.env*files:backend/.env– production defaults (gitignored). Copybackend/.env.exampleand fill in real secrets.backend/.env-development– used wheneverNODE_ENVis unset ordevelopment. Update this file for local dev.backend/.env-test– used whenNODE_ENV=test, e.g., during Jest/e2e runs.
cp backend/.env.example backend/.env # production / deployment secretsEnsure 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_ENVcontrols which file loads (defaults todevelopment); Jest setsNODE_ENV=testautomatically, andNODE_ENV=production npm run start:prodwill read from.env. -
Run the dev servers (in separate terminals)
(cd backend && npm run start:dev) # http://localhost:3000 (cd frontend && npm run dev) # http://localhost:5173 -
Optionally build/preview the frontend
(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