AI-Powered Recruitment Management System Built with Next.js & TypeScript
π Quick Start β’ π Documentation β’ π‘ Features β’ π€ Contributing β’ π License
- Overview
- Features
- Tech Stack
- Prerequisites
- Quick Start
- Database Setup
- Configuration
- Project Structure
- Development
- Deployment
- Contributing
- License
- Support
Talenust is a modern, full-featured recruitment management platform designed to streamline the hiring process. Built with cutting-edge technologies, it's designed to be self-hosted, giving you complete control over your data and infrastructure.
- π¨ Beautiful UI/UX - Modern dark theme with intuitive design
- π High Performance - Built with Next.js 16+ App Router
- π Secure - Enterprise-grade security
- π Analytics - Comprehensive recruitment analytics and reporting
- π€ AI-Powered - Smart candidate matching and scoring
- π Multi-tenant - Support for multiple companies/organizations
- π± Responsive - Works seamlessly on desktop, tablet, and mobile
- π Self-Hosted - Complete control over your data and infrastructure
- π¦ JSON Demo Included - Works out of the box with demo data, integrate your database when ready
-
π Job Management
- Create, edit, and manage job postings
- Job templates and bulk operations
- Status tracking (Draft, Published, Closed)
- Public job listings with search and filters
-
π₯ Candidate Management
- CV upload and parsing
- Candidate profiles with skills and experience
- Application tracking and status management
- Advanced candidate search and filtering
-
π Analytics & Reports
- Real-time dashboard with key metrics
- Advanced reporting with date range filters
- Application trends and hiring funnel
- Score distribution and performance metrics
- Export reports (PDF, CSV, Email)
-
π€ Smart Matching
- AI-powered candidate-job matching
- Automated scoring based on requirements
- Weighted scoring criteria
- Top candidate recommendations
-
π¨βπΌ Team Collaboration
- Multi-user support with role-based access
- Notes and comments on candidates
- Activity feed and timeline
- User management and permissions
-
βοΈ Settings & Configuration
- Company branding and customization
- API key management
- Integration settings (Slack, Teams, etc.)
- Notification preferences
Talenust is designed to be self-hosted, giving you:
- Complete Data Control - Your data stays on your servers
- Customization - Full access to modify and extend the platform
- Privacy - No third-party data sharing
- Flexibility - Deploy on your preferred infrastructure
- Next.js 16+ - React framework with App Router
- TypeScript - Type-safe JavaScript
- Tailwind CSS v4 - Utility-first CSS framework
- Recharts - Composable charting library
- React Hook Form - Performant forms
- Zod - TypeScript-first schema validation
- Font Awesome - Icon library
- PostgreSQL - Compatible with any PostgreSQL database
- Supabase - Optional integration (recommended)
- Custom Database - Easy integration with your existing database
- ESLint - Code linting
- TypeScript - Static type checking
- Git - Version control
Before you begin, ensure you have the following installed:
- Node.js 18.0 or higher (Download)
- npm, yarn, or pnpm package manager
- Git (Download)
- PostgreSQL Database (or use Supabase, or start with JSON demo)
git clone https://github.com/mahdimiad/recruitment-app.git
cd recruitment-appnpm install
# or
yarn install
# or
pnpm installCreate a .env.local file in the root directory:
# Database Configuration (Optional - uses JSON demo by default)
# Option 1: Supabase
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
# Option 2: Custom PostgreSQL
DATABASE_URL=postgresql://user:password@localhost:5432/talenust_db
# Deployment Type
DEPLOYMENT_TYPE=self-hostedNote: By default, the app uses a JSON-based mock database for demonstration. You can integrate Supabase, PostgreSQL, or any other database by configuring the environment variables above.
npm run devOpen http://localhost:3000 in your browser.
The app comes with a JSON-based demo database that works out of the box. This allows you to:
- Test all features immediately without database setup
- Explore the UI and functionality
- Develop and customize the application
The demo database is located in lib/mock-db/data.json and is fully functional for development and testing.
When you're ready to use a real database, you can integrate:
-
Create a Supabase Project
- Go to supabase.com
- Create a new project
- Copy your project URL and API keys
-
Set Up Database Schema
- Run the SQL migrations from
Docs/database/schema.sql(if available) - Or use Supabase's SQL editor to create tables manually
- See
Docs/CONVERSION_PLAN.mdfor database schema details
- Run the SQL migrations from
-
Configure Environment Variables
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
-
Update Code
- Replace mock database calls in
lib/mock-db/index.tswith Supabase queries - Or create a new service layer that uses Supabase client
- Replace mock database calls in
-
Create a PostgreSQL Database
createdb talenust_db
-
Run Migrations
- Import the schema from
Docs/database/schema.sql - Or use your preferred migration tool
- Import the schema from
-
Configure Environment Variables
DATABASE_URL=postgresql://user:password@localhost:5432/talenust_db
-
Update Code
- Replace mock database calls with your database queries
- Use your preferred ORM or query builder (Prisma, Drizzle, etc.)
Talenust is database-agnostic. You can integrate:
- MySQL/MariaDB
- MongoDB
- SQLite
- Any other database by updating the data access layer
Migration Path: Start with the JSON demo, then migrate to your preferred database when ready.
| Variable | Description | Required | Default |
|---|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL (if using Supabase) | No | - |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anonymous key (if using Supabase) | No | - |
SUPABASE_SERVICE_ROLE_KEY |
Supabase service role key (if using Supabase) | No | - |
DATABASE_URL |
PostgreSQL connection string (if using PostgreSQL) | No | - |
DEPLOYMENT_TYPE |
Deployment type: self-hosted |
No | self-hosted |
Note: All database variables are optional. The app uses a JSON demo database by default. Configure these only when integrating your own database.
- Branding: Update logo in
public/images/ - Colors: Modify Tailwind config in
tailwind.config.ts - Company Info: Update in Settings page after deployment
recruitment-app/
βββ app/ # Next.js App Router
β βββ (auth)/ # Authentication routes
β β βββ login/ # Login page
β β βββ signup/ # Signup page
β βββ dashboard/ # Dashboard routes
β β βββ jobs/ # Job management
β β βββ candidates/ # Candidate management
β β βββ reports/ # Analytics & reports
β β βββ settings/ # Settings
β βββ jobs/ # Public job listings
β βββ page.tsx # Landing page
βββ components/ # React components
β βββ dashboard/ # Dashboard components
β βββ jobs/ # Job-related components
β βββ layout/ # Layout components
β βββ reports/ # Report components
βββ lib/ # Utility libraries
β βββ mock-db/ # JSON demo database (default)
β βββ supabase/ # Supabase client (optional)
β βββ utils/ # Utility functions
β βββ deployment/ # Deployment detection
βββ public/ # Static assets
β βββ images/ # Images and logos
βββ types/ # TypeScript types
βββ Docs/ # Documentation
β βββ CONVERSION_PLAN.md # Development plan
β βββ database/ # Database schemas
βββ .env.local # Environment variables (create this)
βββ package.json # Dependencies
βββ tsconfig.json # TypeScript config
βββ tailwind.config.ts # Tailwind config
# Development
npm run dev # Start development server
# Production
npm run build # Build for production
npm run start # Start production server
# Code Quality
npm run lint # Run ESLint-
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Make Changes
- Write your code
- Follow the existing code style
- Add comments where necessary
-
Test Your Changes
npm run build # Ensure build succeeds npm run lint # Check for linting errors
-
Commit and Push
git add . git commit -m "Add: your feature description" git push origin feature/your-feature-name
-
Create Pull Request
- Open a PR on GitHub
- Describe your changes
- Wait for review
- Use TypeScript for all new files
- Follow ESLint rules
- Use functional components with hooks
- Prefer
async/awaitover promises - Use Tailwind CSS for styling
-
Build the Application
npm run build
-
Set Up Environment
- Configure
.env.localwith production values - Optionally set up your database (or use JSON demo)
- Configure file storage if needed
- Configure
-
Start Production Server
npm run start
-
Run with Docker (optional)
docker build -t recruitment-app . docker run -p 3000:3000 recruitment-app -
Deploy to Vercel/Railway/Render (optional)
- Push your code to GitHub
- Import to your preferred platform
- Configure environment variables
- Deploy!
Note: You can deploy anywhere that supports Node.js. The app is self-contained and doesn't require specific hosting providers.
We welcome contributions! Here's how you can help:
- π Report Bugs - Open an issue with detailed information
- π‘ Suggest Features - Share your ideas in discussions
- π Improve Documentation - Help make docs better
- π§ Submit Pull Requests - Fix bugs or add features
- β Star the Project - Show your support
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Please be respectful and constructive in all interactions.
This project is licensed under the MIT License - see the LICENSE file for details.
- π Documentation: Check the
Docs/directory - π¬ Discussions: GitHub Discussions
- π Issues: GitHub Issues
- Built with Next.js
- Database powered by Supabase
- Icons by Font Awesome
- Charts by Recharts
Made with β€οΈ by Mahdi Miad
β Star us on GitHub if you find this project helpful!