Tripper é uma plataforma para organizar viagens entre grupos de amigos, permitindo aos organizadores criar viagens, convidar participantes, programar atividades e gerenciar toda a logística de maneira eficiente e colaborativa.
- Criação de Viagens: Organize viagens com facilidade, definindo destino, datas e convidando participantes.
- Convites e Confirmações por E-mail: Convide amigos via e-mail e acompanhe as confirmações diretamente na plataforma.
- Gerenciamento de Atividades: Planeje e visualize atividades programadas para cada dia da viagem.
- Sugerir Atividades: Participantes podem sugerir novas atividades, que os organizadores podem aceitar ou rejeitar.
- Recursos de Gamificação: Recompense os participantes por ações como sugestões e confirmações rápidas.
- Sistema de Autenticação via Magic Link: Usuários podem acessar o sistema sem necessidade de senhas, através de links únicos enviados por e-mail.
Tripper é construído usando Next.js 15 e aproveita ao máximo as Server Actions, permitindo que o projeto opere sem um back-end dedicado. Toda a lógica de negócios, autenticação, e manipulação de dados é feita diretamente no servidor via server actions, garantindo simplicidade e eficiência.
- Server Actions: Todas as operações que envolvem manipulação de dados (criação de viagens, confirmação de participantes, etc.) são processadas no servidor, eliminando a necessidade de um back-end separado.
- Rotas e APIs: As rotas e endpoints são gerenciados diretamente no Next.js, centralizando as funcionalidades.
- Autenticação via Magic Link: Autenticação simples e segura sem a necessidade de senhas, baseada em links temporários enviados por e-mail.
- Node.js 18+
- NPM ou Yarn
- Next.js 15
-
Clone o repositório:
git clone https://github.com/seuusuario/tripper.git
-
Instale as dependências:
cd tripper npm install
-
Configure as variáveis de ambiente:
-
Crie um arquivo
.env.local
na raiz do projeto e defina as seguintes variáveis:NEXT_PUBLIC_BASE_URL=http://localhost:3000 EMAIL_SERVICE_API_KEY=<sua-chave-api-de-email>
-
-
Execute o projeto localmente:
npm run dev
-
O projeto estará disponível em
http://localhost:3000
.
-
Criar Viagem:
- O usuário cria uma nova viagem na página inicial, fornecendo informações como destino, data de início e fim, e convidados (opcional).
-
Convites por E-mail:
- O organizador convida os participantes via e-mail. Os convites contêm um link único que permite ao usuário confirmar sua participação e acessar as informações da viagem.
-
Confirmação e Autenticação:
- Ao aceitar o convite, uma conta é criada automaticamente, e o usuário é autenticado via magic link. Não é necessário criar uma senha ou conta manualmente.
-
Gerenciamento de Atividades:
- O organizador cadastra atividades para cada dia da viagem. Participantes também podem sugerir novas atividades que podem ser aceitas ou recusadas.
-
Dashboard de Viagens:
- Após confirmar a participação, o usuário tem acesso ao dashboard da viagem, onde pode visualizar as atividades e interagir com outros participantes.
Tripper usa gamificação para incentivar a participação ativa e o engajamento dos usuários:
- Pontos e Recompensas: Participantes ganham pontos por confirmar presença rapidamente, sugerir atividades e participar ativamente na organização da viagem.
- Classificação de Participantes: O sistema mantém um ranking dos participantes mais engajados, promovendo uma competição amigável.
Utilizando as Server Actions do Next.js 15, todas as operações são executadas diretamente no servidor. Abaixo estão algumas das principais ações do sistema:
export async function createTrip(data) {
// Lógica para salvar a viagem no banco de dados
}
export async function sendInvite(email, tripId) {
// Lógica para enviar convite via e-mail
}
export async function confirmParticipant(token) {
// Lógica para confirmar participação e autenticar via magic link
}
- Day.js: Para manipulação e verificação de datas.
- React Mail & Resent: Bibliotecas para lidar com e-mails no front-end.
- Nodemailer: Utilizado para envio de e-mails no back-end.
- Promise.all(): Para executar operações assíncronas em paralelo, como o envio de múltiplos convites.