VagaFlow is a full-stack job application platform that streamlines the recruitment process. Companies can post job openings, manage applications, and track candidates, while job seekers can browse opportunities and apply directly through an intuitive interface.
- 🔍 Browse available job listings
- 📝 Apply to positions with custom messages
- 🏷️ Filter by location, work mode, and seniority level
- 📱 Fully responsive mobile experience
- 📊 Comprehensive dashboard with analytics
- ➕ Create and manage job postings
- 👥 View and manage candidate applications
- 📧 Contact candidates directly via email
- 📈 Track application metrics per position
- Framework: Next.js 15.1 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: Custom components with Tailwind
- API: Next.js API Routes
- Database: PostgreSQL (Neon)
- ORM: Prisma
- Validation: Zod
- Hosting: Vercel
- Database: Neon (PostgreSQL)
- Node.js 18+
- npm or yarn
- PostgreSQL database (or Neon account)
- Clone the repository
git clone https://github.com/yourusername/vagaflow.git
cd vagaflow- Install dependencies
npm install- Set up environment variables
cp .env.example .envEdit .env with your credentials:
DATABASE_URL="postgresql://user:password@host:5432/database"- Run database migrations
npx prisma migrate dev- Seed the database (optional)
npx prisma db seed- Start the development server
npm run devOpen http://localhost:3000 in your browser.
vagaflow-app/
├── app/
│ ├── api/ # API routes
│ │ ├── applications/ # Application endpoints
│ │ └── jobs/ # Job endpoints
│ ├── empresa/ # Company pages
│ │ ├── dashboard/ # Company dashboard
│ │ └── vagas/ # Job management
│ ├── vagas/ # Public job listings
│ │ ├── _components/ # Page-specific components
│ │ └── [slug]/ # Job detail page
│ ├── _components/ # Shared components
│ └── page.tsx # Homepage
├── prisma/
│ ├── schema.prisma # Database schema
│ └── seed.ts # Database seeding
└── public/ # Static assets
- Dynamic job pages with SEO-friendly slugs
- Filtering by work mode (Remote, Hybrid, On-site)
- Seniority levels (Intern, Junior, Mid, Senior, Lead)
- Application count tracking
- Candidate information collection
- Message/cover letter support
- Email integration for direct contact
- Application timestamp tracking
- Real-time statistics (total jobs, applications, average per job)
- Job performance metrics
- Quick access to candidate applications
Company
├── id, name, slug, email, password
└── jobs (1:N)
Job
├── id, title, slug, description
├── location, workMode, seniority
├── companyId (FK)
└── applications (1:N)
Candidate
├── id, name, email
└── applications (1:N)
Application
├── id, message
├── jobId (FK)
└── candidateId (FK)npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npx prisma studio # Open Prisma Studio (database GUI)Create a .env file with:
DATABASE_URL="postgresql://..."
NEXT_PUBLIC_APP_URL="http://localhost:3000"- Push your code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy!
Use Neon for free PostgreSQL hosting:
- Create account and project
- Copy connection string
- Add to Vercel environment variables
- Run migrations:
npx prisma migrate deploy
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'feat: add some amazing feature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
We follow Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changes (formatting, etc.)refactor:Code refactoringtest:Test updateschore:Build process or auxiliary tool changes
This project is licensed under the MIT License - see the LICENSE file for details.
Eduardo Farias
- GitHub: https://github.com/EduardoFSanto
- LinkedIn: (https://www.linkedin.com/in/eduardo-farias-a886b4361)
- Next.js team for the amazing framework
- Vercel for hosting
- Neon for PostgreSQL hosting
- Prisma for the excellent ORM
Made with ❤️ by Eduardo Farias
⭐ Star this repo if you find it helpful!
