Skip to content

Sg-2003/Course-Finder-React-Mini-App

Repository files navigation

Course Finder

A modern, full-stack web application for discovering and exploring online courses. Built with React, TypeScript, Express.js, and PostgreSQL.

🌐 Live Deployment

The application is deployed on Vercel: https://course-finder-react-mini-app-new.vercel.app/

Features

  • 🔍 Search & Filter: Search courses by name, category, description, or instructor
  • 🏷️ Category Filtering: Filter courses by multiple categories simultaneously
  • 📊 Sorting Options: Sort courses by name, category, duration, or difficulty level
  • Favorites: Save your favorite courses for quick access
  • 💬 Inspirational Quotes: Display motivational quotes from a public API
  • 🎨 Modern UI: Beautiful, responsive design with dark mode support
  • 📱 Mobile Responsive: Optimized for all screen sizes

Tech Stack

Frontend

  • React 18 - UI library
  • TypeScript - Type safety
  • Vite - Build tool and dev server
  • Tailwind CSS - Styling
  • Radix UI - Accessible component primitives
  • TanStack Query - Data fetching and caching
  • Wouter - Lightweight routing
  • Framer Motion - Animations
  • Lucide React - Icons

Backend

  • Express.js - Web framework
  • TypeScript - Type safety
  • PostgreSQL - Database
  • Drizzle ORM - Database toolkit
  • Zod - Schema validation

Project Structure

Course-Finder-React-Mini-App/
├── client/                 # Frontend React application
│   ├── src/
│   │   ├── components/     # React components
│   │   ├── pages/          # Page components
│   │   ├── hooks/          # Custom React hooks
│   │   └── lib/            # Utility functions
│   └── index.html
├── server/                 # Backend Express application
│   ├── index.ts           # Server entry point
│   ├── routes.ts          # API routes
│   └── storage.ts         # Database storage layer
├── shared/                # Shared types and schemas
│   └── schema.ts          # Zod schemas and types
└── package.json          # Dependencies and scripts

Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • PostgreSQL (v12 or higher)
  • npm or yarn

Installation

  1. Clone the repository:
git clone https://github.com/Sg-2003/Course-Finder-React-Mini-App.git
cd Course-Finder-React-Mini-App
  1. Install dependencies:
npm install
  1. Set up environment variables: Create a .env file in the root directory:
DATABASE_URL=postgresql://username:password@localhost:5432/course_finder
PORT=5000
NODE_ENV=development
  1. Set up the database:
npm run db:push
  1. Start the development server:
npm run dev

The application will be available at http://localhost:5000

Available Scripts

  • npm run dev - Start development server with hot reload
  • npm run build - Build for production
  • npm start - Start production server
  • npm run check - Type check TypeScript code
  • npm run db:push - Push database schema changes

API Endpoints

Courses

  • GET /api/courses - Get all courses

Quotes

  • GET /api/quote - Get a random inspirational quote

Course Data

The application includes a curated list of courses across various categories:

  • Web Development
  • Data Science
  • Design
  • Mobile Development
  • Marketing
  • Cloud Computing

Each course includes:

  • Name and description
  • Category and difficulty level
  • Duration
  • Instructor information
  • Course image

Features in Detail

Search Functionality

  • Real-time search across course names, categories, descriptions, and instructors
  • Case-insensitive matching
  • Instant results as you type

Filtering & Sorting

  • Filter by multiple categories
  • Sort by:
    • Name (alphabetical)
    • Category
    • Duration (shortest to longest)
    • Level (beginner → intermediate → advanced)

Favorites System

  • Save courses to favorites
  • Persistent storage using browser localStorage
  • Quick access to favorite courses

Responsive Design

  • Mobile-first approach
  • Breakpoints for tablet and desktop
  • Optimized layouts for all screen sizes

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License.

Acknowledgments

  • Course images from Unsplash
  • Inspirational quotes from Quotable API
  • UI components inspired by shadcn/ui

About

A modern, full-stack course discovery portal built with React 18, TypeScript, Express, and PostgreSQL. Features real-time search & sorting, multi-category course filters, a persistent local storage favorites system, motivational quotes fetched from public APIs, database management with Drizzle ORM, and animations using Framer Motion.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages