Um aplicativo mobile completo para gerenciar listas de compras com orçamento.
| Categoria | Tecnologia |
|---|---|
| Backend | Hono, Node.js, TypeScript, Prisma, PostgreSQL, Zod, JWT, bcrypt |
| Mobile | React Native, Expo, TypeScript, NativeWind, TanStack Query |
| Banco de Dados | PostgreSQL |
O backend segue uma arquitetura em camadas para garantir a separação de responsabilidades e a manutenibilidade.
routes/: Define os endpoints da API, valida as requisições com Zod e chama os serviços. É a camada de entrada HTTP.services/: Contém a lógica de negócio principal. Orquestra as chamadas aos repositórios e não conhece nada sobre HTTP.repositories/: Camada de acesso a dados. É a única que interage diretamente com o Prisma para consultas ao banco de dados.middlewares/: Middlewares do Hono, como oauth.middleware.tsque valida os tokens JWT.dtos/: Data Transfer Objects. Contém os schemas Zod para validação e os tipos TypeScript inferidos.common/: Utilitários compartilhados, como a configuração do Prisma e a validação de variáveis de ambiente.
backend/src/
├── common/ # Configs (env, prisma)
├── dtos/ # Schemas de validação (Zod)
├── middlewares/ # Middlewares (auth, error)
├── repositories/ # Acesso a dados (Prisma)
├── routes/ # Definição de rotas (Hono)
├── services/ # Lógica de negócio
└── server.ts # Ponto de entrada do servidor
- Node.js (v18 ou superior)
- npm ou yarn
- Docker e Docker Compose (para o banco de dados PostgreSQL)
-
Navegue até a pasta do backend:
cd backend -
Instale as dependências:
npm install
-
Configure as variáveis de ambiente: Copie o arquivo
.env.examplepara.enve preencha os valores. OJWT_SECRETpode ser gerado com o comandonode -e "console.log(require('crypto').randomBytes(32).toString('base64'))".cp .env.example .env
-
Inicie o banco de dados com Docker:
npm run db:up
-
Execute as migrations do Prisma: Isso criará as tabelas no seu banco de dados.
npm run db:migrate
-
Inicie o servidor de desenvolvimento:
npm run dev
O servidor estará disponível em http://localhost:3000.
A documentação da API (Swagger UI) estará em http://localhost:3000/swagger.
-
Navegue até a pasta do mobile:
cd mobile -
Instale as dependências:
npm install
-
Atualize o IP do Backend: No arquivo
src/infra/api.ts, certifique-se de que obaseURLaponta para o endereço IP da sua máquina na rede local (ex:http://192.168.1.10:3000). -
Inicie o Expo:
npm start
-
Escaneie o QR code com o aplicativo Expo Go no seu celular.
npm run dev: Inicia o servidor em modo de desenvolvimento com hot-reload.npm run build: Compila o código TypeScript para produção.npm run start: Inicia o servidor em modo de produção.npm run db:up: Inicia o container do PostgreSQL com Docker Compose.npm run db:down: Para o container do PostgreSQL.npm run db:migrate: Aplica as migrations do Prisma.npm run db:studio: Abre o Prisma Studio para visualizar e editar os dados.