A modern, responsive job listing application built with Next.js, featuring a beautiful welcome landing page, user authentication, and comprehensive job browsing experience.
- Welcome Landing Page: Beautiful, responsive landing page for unauthenticated users
- User Authentication: Secure sign-in/sign-up with NextAuth.js
- Job Listings: Browse and search through job opportunities (authenticated users only)
- Bookmark System: Save and manage favorite job postings
- Responsive Design: Optimized for mobile, tablet, and desktop
- Job Details: Detailed view of individual job postings
- Landing Page: Engaging welcome page with call-to-action buttons
- Authentication Flow: Seamless sign-in/sign-up process
- Protected Routes: Job listings only accessible to authenticated users
- Smart Navigation: Context-aware navigation based on authentication status
- Redux State Management: Global state management with Redux Toolkit
- TypeScript: Full type safety throughout the application
- Tailwind CSS: Modern, responsive styling with beautiful gradients
- Comprehensive Testing: Unit tests (Jest) and E2E tests (Cypress)
- NextAuth.js Integration: Secure authentication with session management
Beautiful landing page with hero section, features, and call-to-action buttons
Main dashboard showing job cards with bookmark buttons and responsive design
Detailed view of a job posting with bookmark functionality
Mobile-optimized interface with touch-friendly interactions
- Next.js 14 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling with custom gradients
- Redux Toolkit - State management
- NextAuth.js - Authentication and session management
- Jest + Cypress - Testing framework
- Lucide React - Modern icon library
-
Clone the repository
git clone https://github.com/Kidist-Ayele/Job-Listing-App.git cd Job-Listing-App/Job-Listing-app -
Install dependencies
npm install
-
Set up environment variables Create a
.env.localfile in the root directory:NEXTAUTH_SECRET=your-secret-key-here NEXTAUTH_URL=http://localhost:3000
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
Run unit tests with Jest:
npm testRun Cypress E2E tests:
npm run dev
npm run cypress:run