Uma aplicação para gerir tarefas de estágios. Porque toda a gente precisa de mais stress, mas de forma organizada.
Acabámos de implementar uma reforma completa do sistema de autenticação:
- Email + Password com 2FA - Código de verificação de 6 dígitos
- Login com Google - Um clique e está dentro
- Login com GitHub - Um clique e está dentro
- Leia primeiro: AUTH_READY.md (2 minutos)
- Configure: OAUTH_SETUP.md (se quer Google/GitHub)
- Teste: QUICK_TEST_GUIDE.md (5 minutos)
- Detalhes técnicos: IMPLEMENTATION_SUMMARY.md
SemStress é um sistema de gestão de tarefas e registos de tempo para programas de estágio. Foi criado com a firme convicção de que os estagiários trabalham melhor quando sabem exatamente quantas horas já desperdiçaram naquele dia.
- Autenticação Avançada: Login com email (2FA), Google e GitHub
- Dashboard: Aquele sítio onde vê tudo de uma vez e sente-se produtivo por alguns segundos.
- Tarefas: Cria, edita e marca como concluídas. A parte de "marca como concluída" é a favorita de toda a gente.
- Registos de Tempo: Porque se não contar, não aconteceu.
- Relatórios: Transformar números em mais números, mas com mais cores.
- Papéis de Utilizador: Admin para quem gosta de ter control issues, e user para o resto.
Backend: NestJS com TypeScript. Porque Node.js puro seria demasiado fácil.
Frontend: Next.js com React. É o que toda a gente usa, portanto há de funcionar.
Base de Dados: PostgreSQL via Prisma. Gostamos de SQL, mas com menos digitação.
Autenticação: JWT + OAuth 2.0 + 2FA por Email. Tokens mágicos, segurança extra, emails chatos.
- Clone o repositório (aquele comando
git cloneque nunca se lembra de cor) npm installna raiz e emfrontend/- Configure o ficheiro
.envcom a base de dados (copie o.env.example, naturalmente) npx prisma migrate devpara aplicar migrações- Execute
npm run start:devna raiz para o backend - Execute
npm run devemfrontend/para o frontend - Abra
http://localhost:3001e procure alguma coisa que se pareça com uma interface
semstress/
├── src/ # Backend (NestJS)
│ └── auth/ # ← Autenticação avançada (NOVO!)
├── frontend/ # Frontend (Next.js)
├── prisma/ # Schemas da base de dados
├── test/ # E2E tests (teoricamente)
├── 📄 AUTH_READY.md ← COMECE AQUI!
├── 📄 OAUTH_SETUP.md
├── 📄 QUICK_TEST_GUIDE.md
├── 📄 IMPLEMENTATION_SUMMARY.md
└── 📄 EXECUTIVE_SUMMARY_PT.md
| Documento | Para | Tempo |
|---|---|---|
| AUTH_READY.md | Entender o que foi feito | 2 min |
| QUICK_TEST_GUIDE.md | Testar tudo | 5 min |
| OAUTH_SETUP.md | Configurar Google/GitHub | 15 min |
| IMPLEMENTATION_SUMMARY.md | Detalhes técnicos | 10 min |
| EXECUTIVE_SUMMARY_PT.md | Resumo completo em português | 10 min |
| ARCHITECTURE_MAP.md | Mapa de mudanças | 5 min |
Copia .env.example para .env e configura:
# Base de Dados
DATABASE_URL=postgresql://...
# JWT
JWT_SECRET=your-secret-key
JWT_EXPIRES_IN=24h
# Email (para 2FA)
MAIL_HOST=localhost
MAIL_PORT=1025
# OAuth (opcional)
GOOGLE_CLIENT_ID=...
GITHUB_CLIENT_ID=...Para desenvolvimento, o MailHog (localhost:8025) já está configurado no docker-compose.
SemStress is a task management and time tracking system for internship programs. Built with the firm belief that interns work better when they know exactly how many hours they've wasted today.
- Advanced Authentication: Email login with 2FA, Google OAuth, GitHub OAuth
- Dashboard: That place where you see everything at once and feel productive for a few seconds.
- Tasks: Create, edit and mark as complete. The "mark as complete" part is everyone's favorite.
- Time Tracking: Because if you don't count it, it didn't happen.
- Reports: Turning numbers into more numbers, but with more colors.
- User Roles: Admin for people with control issues, and user for everyone else.
Backend: NestJS with TypeScript. Because pure Node.js would be too easy.
Frontend: Next.js with React. It's what everyone uses, so it has to work.
Database: PostgreSQL via Prisma. We like SQL, but with less typing.
Authentication: JWT + OAuth 2.0 + Email 2FA. Magic tokens, extra security, annoying emails.
- Clone the repository
npm installin root andfrontend/- Copy
.env.exampleto.envand configure npx prisma migrate devto apply migrationsnpm run start:devfor backendnpm run devinfrontend/for frontend- Open
http://localhost:3001
| Document | Purpose | Time |
|---|---|---|
| AUTH_READY.md | Understand what's new | 2 min |
| QUICK_TEST_GUIDE.md | Test everything | 5 min |
| OAUTH_SETUP.md | Setup Google/GitHub OAuth | 15 min |
| IMPLEMENTATION_SUMMARY.md | Technical details | 10 min |
- O servidor backend executa na porta 3001
- O servidor frontend na 3000
- Se alguma coisa não funcionar, tente apagar
node_modulesenpm installde novo - Se isso não funcionar também, feche o computador e vá fazer uma caminhada
SemStress is a task and time tracking management system for internship programs. Built on the principle that interns work better when they know exactly how many hours they've already wasted today.
- Authentication: You know the drill. Login and registration. If you can remember your password.
- Dashboard: That place where you see everything at once and feel productive for a few seconds.
- Tasks: Create, edit, and mark as done. The "mark as done" part is everyone's favorite.
- Time Entries: Because if you don't track it, it didn't happen.
- Reports: Turning numbers into more numbers, but with better colors.
- User Roles: Admin for control enthusiasts, and user for the rest of us.
Backend: NestJS with TypeScript. Because vanilla Node.js would be too easy.
Frontend: Next.js with React. It's what everyone uses, so it's probably fine.
Database: PostgreSQL via Prisma. We like SQL, but with less typing.
Authentication: JWT. Magic tokens that expire and make you angry.
- Clone the repository (that
git clonecommand you never remember) npm installin the root and infrontend/- Set up your
.envfile with the database (copy.env.example, obviously) - Run
npm run start:devin the root for the backend - Run
npm run devinfrontend/for the frontend - Open
http://localhost:3000and look for something that resembles an interface
semstress/
├── src/ # Backend (NestJS)
├── frontend/ # Frontend (Next.js)
├── prisma/ # Database schemas
└── test/ # E2E tests (theoretically)
- Backend server runs on port 3001
- Frontend server on 3000
- If something doesn't work, try deleting
node_modulesand runningnpm installagain - If that doesn't work either, close the laptop and go for a walk