A streamlined job search platform empowering users to find relevant opportunities with structured data and JSON-LD integration.
- π Overview
- π¦ Features
- π Structure
- π» Installation
- ποΈ Usage
- π Hosting
- π License
- π Authors
This repository houses the Minimum Viable Product (MVP) for a job search portal. This innovative web-based platform aims to revolutionize job hunting by providing a user-friendly, structured, and accessible experience. It utilizes cutting-edge technologies such as Next.js, TypeScript, React, and PostgreSQL, with a focus on structured data and JSON-LD integration for improved searchability.
Feature | Description | |
---|---|---|
π | Job Search | Allows users to search for jobs using keywords, location, job title, company, and other criteria. Advanced filtering options are available to narrow down results. |
π | Structured Data | Presents job listings with well-defined categories (job title, company description, location, responsibilities, qualifications, salary range). |
π | JSON-LD Integration | Incorporates JSON-LD (JSON-LD for Linked Data) to enhance search engine visibility and discoverability of job listings. |
π€ | User Authentication | Enables users to create accounts, log in, and manage personal profiles, including saving jobs and accessing personalized features. |
π | Security | Implements robust security measures to protect user data, including secure authentication, password hashing, and input validation. |
π | Scalability | Designed to handle increasing user volume and job postings, ensuring long-term sustainability and future expansion. |
π¨ | User Interface | Offers a clear and intuitive interface across different devices, prioritizing ease of use and accessibility. |
π | Analytics | Collects data on user interactions and job trends to improve the platform's effectiveness and personalize the user experience. |
job-search-portal-mvp
βββ pages
β βββ search
β β βββ index.tsx
β βββ job
β β βββ [jobId].tsx
β βββ profile
β β βββ index.tsx
β βββ api
β βββ jobs
β β βββ route.ts
β βββ auth
β βββ [...nextauth].ts
βββ components
β βββ shared
β β βββ Button.tsx
β β βββ Card.tsx
β β βββ Input.tsx
β βββ features
β βββ auth
β β βββ LoginForm.tsx
β βββ search
β β βββ JobCard.tsx
β β βββ SearchForm.tsx
β βββ job
β β βββ JobDetails.tsx
β βββ profile
β βββ UserProfile.tsx
βββ lib
β βββ api
β β βββ client.ts
β βββ utils
β βββ formatters.ts
β βββ helpers.ts
βββ styles
β βββ globals.css
βββ public
β βββ images
βββ .env.local
βββ .gitignore
βββ package.json
βββ next.config.js
- Node.js v18+
- npm 8+
- PostgreSQL 14+
- Clone the repository:
git clone https://github.com/coslynx/job-search-portal-mvp.git cd job-search-portal-mvp
- Install dependencies:
npm install
- Configure environment variables:
Replace the placeholders in
cp .env.example .env
.env
with your actual Supabase URL, API key, and any other necessary environment variables. - Start the development server:
This will launch the application at http://localhost:3000.
npm run dev
This MVP demonstrates the core features of the job search portal, including:
- Job Search: Navigate to the homepage (http://localhost:3000) and use the search bar to find jobs based on keywords and location.
- Job Details: Click on a job listing to view detailed information, including job title, company description, responsibilities, qualifications, salary range, and application instructions.
- User Authentication: Use the "Sign In" button to register a new account or log in. Once logged in, you can save jobs to your profile.
This MVP is designed to be deployed using Vercel. Here are the steps for deployment:
- Create a Vercel account if you don't have one already.
- Log in to Vercel and select "New Project".
- Import from Git and provide the repository URL: https://github.com/coslynx/job-search-portal-mvp
- Choose the environment variables for deployment (refer to the
environment variables
section below). - Deploy your application! Once the deployment process is complete, you will have a live instance of the Job Search Portal MVP.
SUPABASE_URL
: Your Supabase URLSUPABASE_KEY
: Your Supabase API keyNEXTAUTH_SECRET
: A unique secret key for NextAuth.js (generate usingopenssl rand -base64 32
)NEXTAUTH_URL
: The URL of your Vercel deployment (e.g.,https://your-job-portal.vercel.app
)
- POST /api/auth/register
- Description: Register a new user account.
- Request Body:
{"email": "your@email.com", "password": "password123", "name": "Your Name"}
- Response (Success):
{"id": "user-id", "email": "your@email.com", "name": "Your Name", "token": "your-jwt-token"}
- Response (Error):
{"error": "error message"}
- POST /api/auth/signin
- Description: Sign in an existing user.
- Request Body:
{"email": "your@email.com", "password": "password123"}
- Response (Success):
{"id": "user-id", "email": "your@email.com", "name": "Your Name", "token": "your-jwt-token"}
- Response (Error):
{"error": "error message"}
- GET /api/auth/session
- Description: Check for existing user sessions.
- Headers:
Authorization: Bearer TOKEN
- Response (Success):
{"id": "user-id", "email": "your@email.com", "name": "Your Name"}
- Response (Error):
{"error": "error message"}
- GET /api/jobs
- Description: Get a list of job listings based on search parameters.
- Query Parameters:
q=keywords
,location=city,state
(optional) - Response:
[{"id": "job-id", "title": "Job Title", "company": "Company Name", "location": "City, State", "description": "Job Description", ...}]
- GET /api/jobs/:id
- Description: Get details for a specific job listing by ID.
- Response:
{"id": "job-id", "title": "Job Title", "company": "Company Name", "location": "City, State", "description": "Job Description", ...}]
- User authentication is managed using NextAuth.js.
- Users must register or sign in to access protected features like saving jobs.
- JWT tokens are issued upon successful authentication.
- Include the JWT token in the
Authorization
header for all protected API requests (e.g.,Authorization: Bearer YOUR_JWT_TOKEN
).
# Register a new user
curl -X POST http://localhost:3000/api/auth/register \
-H "Content-Type: application/json" \
-d '{"email": "your@email.com", "password": "password123", "name": "Your Name"}'
# Sign in an existing user
curl -X POST http://localhost:3000/api/auth/signin \
-H "Content-Type: application/json" \
-d '{"email": "your@email.com", "password": "password123"}'
# Get a list of job listings (with search parameters)
curl -X GET http://localhost:3000/api/jobs?q=Software+Engineer&location=San+Francisco,CA
# Get details for a specific job listing
curl -X GET http://localhost:3000/api/jobs/job-id-123
This Minimum Viable Product (MVP) is licensed under the GNU AGPLv3 license.
This MVP was entirely generated using artificial intelligence through CosLynx.com.
No human was directly involved in the coding process of the repository: job-search-portal-mvp
For any questions or concerns regarding this AI-generated MVP, please contact CosLynx at:
- Website: CosLynx.com
- Twitter: @CosLynxAI
Create Your Custom MVP in Minutes With CosLynxAI!