Live Demo: https://diet-app-3iyl.onrender.com/
DietGreen is a responsive web application for generating personalized meal plans based on dietary profiles, physical goals, and nutritional requirements.
The application supports 10 dietary profile options, including vegan, vegetarian, lacto-vegetarian, pescetarian, and custom profiles. Users can combine their dietary preferences with goals such as muscle gain, weight loss, bulking, and cutting.
Generated meal plans include nutritional information, macronutrient calculations, and ranked food substitutions based on nutritional suitability. The system also considers economic and local food availability when selecting alternatives.
Users can export their meal plans as PDF or Excel (.xlsx) files.
Authentication is optional and is integrated with Google OAuth and GitHub OAuth through Auth.js. Authenticated users can save and access their meal plans across sessions.
- Personalized meal plan generation
- 10 dietary profile options
- Multiple physical and nutritional goals
- Calorie and macronutrient calculations
- Ranked nutritional food substitutions
- Economic and local food considerations
- PDF meal plan export
- Excel (.xlsx) meal plan export
- Google OAuth authentication
- GitHub OAuth authentication
- User-specific meal plan persistence
- Responsive interface
- Input validation with Zod
- Open the live application.
- Select your dietary profile.
- Select your physical goal.
- Enter the requested information.
- Generate your personalized meal plan.
- Review the meals and nutritional information.
- Use the suggested substitutions when needed.
- Export your plan to PDF or Excel.
- Sign in with Google or GitHub if you want to save your meal plans.
Authentication is optional. The application can generate meal plans without an account, but persistent user-specific storage requires authentication.
- Next.js 16 — App Router and application framework
- TypeScript — type-safe development
- Tailwind CSS 4 — responsive styling
- Prisma ORM 7 — database access and migrations
- Neon PostgreSQL — cloud PostgreSQL database
- @prisma/adapter-neon — Prisma driver adapter for Neon
- Auth.js / NextAuth.js v5 — authentication
- Google OAuth — Google sign-in integration
- GitHub OAuth — GitHub sign-in integration
- Zod — input and API validation
- @react-pdf/renderer — PDF generation
- SheetJS (xlsx) — Excel export
- Lucide React — interface icons
- Fraunces + Work Sans — application typography
DietGreen follows a layered architecture inspired by Clean Architecture and SOLID principles.
src/
├── domain/
│ ├── entities/
│ ├── repositories/
│ └── services/
│
├── application/
│ └── use-cases/
│
├── infrastructure/
│ ├── db/
│ ├── repositories/
│ └── auth/
│
├── lib/
│ ├── container.ts
│ ├── exportPlan.ts
│ └── icons.ts
│
├── components/
│
└── app/
The domain layer contains the core business rules without depending on external infrastructure.
The application layer coordinates the business use cases.
The infrastructure layer contains implementations for the database, repositories, authentication, and other external services.
Repositories are defined as interfaces within the domain and implemented in the infrastructure layer, following the Dependency Inversion Principle.
This separation keeps the business logic independent from specific technologies and makes infrastructure components easier to replace or maintain.
DietGreen currently supports two OAuth providers:
Users can authenticate using their Google account.
Users can authenticate using their GitHub account.
Both integrations are implemented through Auth.js / NextAuth.js v5.
No other authentication providers are currently integrated.
Generated meal plans can be exported directly from the application.
PDF files are generated using @react-pdf/renderer, producing a structured document suitable for saving or printing.
Meal plans can also be exported as .xlsx files using SheetJS (xlsx), allowing users to edit and analyze the generated data.
Clone the repository and install the dependencies:
npm installCreate your environment file:
cp .env.example .envConfigure the required environment variables:
DATABASE_URL=
DIRECT_URL=
AUTH_SECRET=
AUTH_URL=
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=Generate the Prisma client:
npx prisma generateRun the database migrations:
npx prisma migrate dev --name initSeed the database:
npx prisma db seedStart the development server:
npm run devThe application will be available at:
http://localhost:3000
DietGreen uses PostgreSQL through Neon.
Two database connections are configured:
DATABASE_URL— pooled connection used by the application at runtime.DIRECT_URL— direct connection used by Prisma migrations.
Both connections should use SSL.
The production application is deployed using Render, with Neon PostgreSQL as the database provider.
The production build can be executed with:
npm install && npx prisma generate && npx prisma migrate deploy && npm run buildThe application is started with:
npm run startAfter the initial deployment, the production database can be populated using:
npx prisma db seedThe nutritional values used by DietGreen are reference estimates based on sources such as USDA FoodData Central and the TACO food composition table.
Energy and macronutrient calculations use established nutritional methodologies, including the Mifflin-St Jeor equation and references from sports nutrition literature.
DietGreen is intended as a meal-planning and educational tool and should not replace professional nutritional guidance.
Relevant calculation references are documented in:
src/domain/services/macroCalculator.ts
Rayssa Roberta Rodrigues Silva
Frontend Developer focused on building modern, responsive, and maintainable web applications.
GitHub: https://github.com/rayssarrsilva
This project is licensed under the MIT License.
DietGreen é uma aplicação web responsiva desenvolvida para gerar cardápios personalizados com base no perfil alimentar, objetivo físico e necessidades nutricionais do usuário.
O sistema possui 10 opções de perfil alimentar, incluindo vegano, vegetariano, lactovegetariano, pescetariano e perfil personalizado. Essas opções podem ser combinadas com objetivos como ganho de massa muscular, emagrecimento, bulking e cutting.
Os cardápios gerados apresentam informações nutricionais, cálculo de macronutrientes e substituições de alimentos ranqueadas de acordo com sua adequação nutricional. O sistema também considera a viabilidade econômica e a disponibilidade local dos alimentos ao sugerir alternativas.
Os cardápios podem ser exportados em PDF ou Excel (.xlsx).
A autenticação é opcional e possui integração com Google OAuth e GitHub OAuth, utilizando Auth.js. Usuários autenticados podem salvar e acessar seus cardápios posteriormente.
Aplicação online: https://diet-app-3iyl.onrender.com/
- Geração de cardápios personalizados
- 10 opções de perfil alimentar
- Diferentes objetivos físicos e nutricionais
- Cálculo de calorias e macronutrientes
- Substituições alimentares ranqueadas
- Consideração de viabilidade econômica e local
- Exportação de cardápios para PDF
- Exportação de cardápios para Excel (.xlsx)
- Login com Google
- Login com GitHub
- Persistência de cardápios por usuário
- Interface responsiva
- Validação de dados com Zod
- Acesse a aplicação online.
- Selecione seu perfil alimentar.
- Selecione seu objetivo físico.
- Informe os dados solicitados.
- Gere seu cardápio personalizado.
- Consulte as refeições e informações nutricionais.
- Utilize as substituições sugeridas quando necessário.
- Exporte o cardápio para PDF ou Excel.
- Faça login com Google ou GitHub caso queira salvar seus cardápios.
O login é opcional. A aplicação funciona sem autenticação, mas o armazenamento persistente por usuário depende de uma conta.
- Next.js 16 — App Router e framework da aplicação
- TypeScript — desenvolvimento com tipagem estática
- Tailwind CSS 4 — estilização responsiva
- Prisma ORM 7 — acesso ao banco e migrations
- Neon PostgreSQL — banco PostgreSQL em nuvem
- @prisma/adapter-neon — driver adapter do Prisma para Neon
- Auth.js / NextAuth.js v5 — autenticação
- Google OAuth — integração de login com Google
- GitHub OAuth — integração de login com GitHub
- Zod — validação de entradas e APIs
- @react-pdf/renderer — geração de PDF
- SheetJS (xlsx) — exportação para Excel
- Lucide React — ícones da interface
- Fraunces + Work Sans — tipografia da aplicação
O DietGreen utiliza uma arquitetura em camadas inspirada em Clean Architecture e princípios SOLID.
src/
├── domain/
│ ├── entities/
│ ├── repositories/
│ └── services/
│
├── application/
│ └── use-cases/
│
├── infrastructure/
│ ├── db/
│ ├── repositories/
│ └── auth/
│
├── lib/
│ ├── container.ts
│ ├── exportPlan.ts
│ └── icons.ts
│
├── components/
│
└── app/
A camada de domínio concentra as principais regras de negócio sem depender diretamente de infraestrutura externa.
A camada de aplicação coordena os casos de uso.
A camada de infraestrutura contém as implementações relacionadas ao banco de dados, repositórios, autenticação e demais serviços externos.
Os repositórios são definidos como interfaces no domínio e implementados na infraestrutura, seguindo o Princípio da Inversão de Dependência.
Essa separação mantém as regras de negócio independentes das tecnologias utilizadas e facilita a manutenção e substituição de componentes de infraestrutura.
Atualmente, o DietGreen possui duas integrações OAuth:
Permite que usuários façam login utilizando sua conta Google.
Permite que usuários façam login utilizando sua conta GitHub.
As duas integrações são implementadas através do Auth.js / NextAuth.js v5.
Nenhum outro provedor de autenticação está integrado atualmente.
Os cardápios podem ser exportados diretamente pela aplicação.
Os arquivos PDF são gerados utilizando @react-pdf/renderer, produzindo documentos estruturados para salvar ou imprimir.
Os cardápios também podem ser exportados como arquivos .xlsx utilizando SheetJS (xlsx), permitindo editar e analisar os dados gerados.
Instale as dependências:
npm installCrie o arquivo de ambiente:
cp .env.example .envConfigure as variáveis necessárias:
DATABASE_URL=
DIRECT_URL=
AUTH_SECRET=
AUTH_URL=
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
AUTH_GITHUB_ID=
AUTH_GITHUB_SECRET=Gere o cliente Prisma:
npx prisma generateExecute as migrations:
npx prisma migrate dev --name initPopule o banco de dados:
npx prisma db seedInicie o servidor:
npm run devA aplicação estará disponível em:
http://localhost:3000
O DietGreen utiliza PostgreSQL através do Neon.
São utilizadas duas conexões:
DATABASE_URL— conexão pooled utilizada pela aplicação em runtime.DIRECT_URL— conexão direta utilizada pelas migrations do Prisma.
Ambas devem utilizar SSL.
A aplicação está publicada no Render, utilizando Neon PostgreSQL como banco de dados.
O build de produção pode ser executado com:
npm install && npx prisma generate && npx prisma migrate deploy && npm run buildO servidor é iniciado com:
npm run startApós o primeiro deploy, o banco de produção pode ser populado utilizando:
npx prisma db seedOs valores nutricionais utilizados pelo DietGreen são estimativas de referência baseadas em fontes como USDA FoodData Central e a Tabela TACO.
Os cálculos de energia e macronutrientes utilizam metodologias nutricionais estabelecidas, incluindo a equação de Mifflin-St Jeor e referências da literatura de nutrição esportiva.
O DietGreen foi desenvolvido como uma ferramenta de planejamento alimentar e apoio educacional, não substituindo acompanhamento profissional.
As referências utilizadas nos cálculos estão documentadas em:
src/domain/services/macroCalculator.ts
Rayssa Roberta Rodrigues Silva
Frontend Developer focada no desenvolvimento de aplicações web modernas, responsivas e sustentáveis.
GitHub: https://github.com/rayssarrsilva
Este projeto está licenciado sob a MIT License.