Applicants First is a human resource management web application.
This is a Next.js project bootstrapped with create-next-app.
- Authentication - Login, confirm email, register
- RBAC - Roles include Admin, Recruiter, and Applicant
- Admin Dashboard - Manage an organization.
- Recruiter Dashboard - Manage jobs.
- Frontend: Next.js
- Backend: Node.js, Next.js
- Database: Supabase (PostgreSQL)
- APIs: Supabase, Resend
-
Clone the repository:
git clone https://github.com/tylerjenningsw/applicants-first.git cd applicants-first -
Install dependencies:
npm install
-
Setup environment variables: Create a
.env.localfile in the root directory and add the following variables:NEXT_PUBLIC_SUPABASE_URL=<YOUR_URL> NEXT_PUBLIC_SUPABASE_ANON_KEY=<YOUR_KEY> DATABASE_URL=<YOUR_DB_URL> RESEND_API_KEY=<YOUR_RESEND_API_KEY>
-
Run the development server:
npm run dev # or yarn dev # or pnpm dev # or bun dev
-
Open http://localhost:3000 with your browser to see the result.
To set up the development environment:
- Ensure you have Node.js and npm installed.
- Follow the installation steps above.
- Use the following command to compile and create an initial build:
npm run build
- Create a Supabase Project: Visit https://supabase.com/ and follow their instructions to create a new project.
- Database Setup: Use the Supabase dashboard to create the necessary tables and relationships for your application's data model.
- Environment Variables: Create a .env.local file in your project's root directory and add your Supabase connection details (URL and API key).
CREATE TABLE applicant (
applicantid serial,
fullname text not null,
emailaddress text not null,
alternateemailaddress text null,
streetaddress text null,
city text null,
state text null,
zipcode text null,
country text null,
linkedinurl text null,
uscitizen boolean null,
educationlevel text null,
specialty text null,
dateaddedtodb date not null,
constraint applicant_pkey primary key (applicantid)
) tablespace pg_default;
CREATE TABLE organization (
OrganizationID SERIAL PRIMARY KEY,
OrganizationName TEXT NOT NULL,
CreationDate DATE NOT NULL,
SubscriptionType TEXT,
AccountStatus TEXT
);
CREATE TABLE profiles (
id uuid PRIMARY KEY REFERENCES auth.users(id),
role TEXT NOT NULL,
first_name TEXT,
last_name TEXT,
organization_id INTEGER REFERENCES organization(OrganizationID),
is_locked_out BOOLEAN,
creation_date DATE DEFAULT CURRENT_DATE,
last_login_date DATE
);
CREATE TABLE invitations (
id SERIAL PRIMARY KEY,
email VARCHAR NOT NULL,
token VARCHAR NOT NULL,
organizationId INTEGER NOT NULL,
expires_at TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT NOW()
);
CREATE TABLE Job (
JobID SERIAL PRIMARY KEY,
OrganizationID INTEGER REFERENCES Organization(OrganizationID),
UserID INTEGER REFERENCES Profile(UserID),
JobTitle VARCHAR(255) NOT NULL,
JobAddressLocation VARCHAR(255) NOT NULL,
PostedDate TIMESTAMP NOT NULL,
JobSalary VARCHAR(255) NOT NULL,
JobStatus VARCHAR(255) NOT NULL,
CandidateResponseCount INTEGER NOT NULL,
TotalApplicantsCount INTEGER NOT NULL,
JobDescription TEXT NOT NULL,
ApplicationDeadline TIMESTAMP NOT NULL
);- Create a resend account and follow the next.js quickstart guide here.
- You will need to modify any email function using your own DNS.
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
- Learn Supabase - learn how to work with Supabase.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out the Next.js deployment documentation for more details.
This project is currently in the Alpha stage. Features are being developed and tested.
This project is licensed under the MIT License. See the LICENSE file for details.
- Version 1.0: Initial Alpha Release
- Version 2.0: Beta Release
For support, please reach out to our GitHub Issues page.
