You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.7 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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