VONANA — People. Communities. Business. Social and commerce platform for Mozambique (Milestone 1).
# VONANA
**Pessoas. Comunidades. Negócios.**
Fundação técnica do Milestone 1 da plataforma VONANA — uma rede social, de comunidades e de
comércio para Moçambique. Este repositório contém apenas a base (autenticação, perfil, shell da
aplicação e design system); as funcionalidades sociais, marketplace e de comunidades serão
construídas em milestones futuros sobre esta fundação.
## 1. Visão geral do projeto
- **Framework:** Next.js 14 (App Router) + TypeScript
- **Estilos:** Tailwind CSS, com um sistema de design centralizado (`src/config/brand.ts`)
- **Base de dados:** PostgreSQL via Prisma ORM
- **Autenticação:** Auth.js (NextAuth v4) com credenciais (email/username + palavra-passe)
- **Validação:** Zod + React Hook Form
- **Idioma:** Português de Moçambique (arquitectura pronta para i18n futuro)
## 2. Requisitos
- Node.js 20 ou superior
- npm 10 ou superior
- Docker Desktop (para correr o PostgreSQL localmente)
- Git
## 3. Instalar dependências
```bash
npm install
```
## 4. Configurar o PostgreSQL localmente (Docker)
O `docker-compose.yml` inclui um serviço `db` pronto a usar:
```bash
docker compose up -d db
```
Isto inicia um PostgreSQL 16 em `localhost:5432` com:
- utilizador: `vonana`
- password: `vonana_dev_password`
- base de dados: `vonana`
Se preferir, pode usar uma instância PostgreSQL já instalada localmente — basta ajustar
`DATABASE_URL` no passo seguinte.
## 5. Variáveis de ambiente
Copie o ficheiro de exemplo e edite os valores:
```bash
cp .env.example .env
```
Gere um `NEXTAUTH_SECRET` seguro:
```bash
openssl rand -base64 32
```
(No Windows/PowerShell, pode gerar um valor aleatório equivalente, ou usar o Git Bash.)
## 6. Executar as migrações do Prisma
Com o PostgreSQL a correr e o `.env` configurado:
```bash
npx prisma migrate dev --name init
```
Isto cria as tabelas (`users`, `accounts`, `sessions`, `verification_tokens`,
`password_reset_tokens`) e gera o Prisma Client.
## 7. Iniciar o servidor de desenvolvimento
```bash
npm …