A modern, responsive eBook marketplace built with React that allows users to browse, search, and purchase educational courses and eBooks. Built with a focus on user experience and modern web development practices.
- π eBook Catalog: Browse through a comprehensive collection of educational courses and eBooks
- π Advanced Search: Search products by title, category, and other filters
- π Shopping Cart: Add items to cart and manage your purchases
- π€ User Authentication: Secure login and registration system
- π± Responsive Design: Optimized for desktop, tablet, and mobile devices
- π Dark Mode: Toggle between light and dark themes
- β Product Ratings: View and filter products by ratings
- π³ Order Management: Track your orders and purchase history
- π¨ Modern UI: Beautiful, intuitive interface built with Tailwind CSS
- Frontend: React 19.1.0
- Routing: React Router DOM 7.6.2
- Styling: Tailwind CSS 3.4.17
- State Management: React Context API
- Backend: JSON Server with authentication
- Notifications: React Toastify
- Testing: React Testing Library
-
Clone the repository
git clone https://github.com/yourusername/readpoint.git cd readpoint -
Install dependencies
npm install
-
Set up the backend server
# Install JSON Server globally (if not already installed) npm install -g json-server # Start the backend server json-server --watch data/db.json --port 8000
-
Start the development server
npm start
-
Open your browser Navigate to http://localhost:3000 to view the application.
readpoint/
βββ public/ # Static assets
βββ src/
β βββ components/ # Reusable UI components
β β βββ elements/ # Basic UI elements
β β βββ layouts/ # Layout components
β β βββ other/ # Other components
β βββ pages/ # Page components
β β βββ home/ # Homepage components
β β βββ products/ # Product listing and details
β β βββ cart/ # Shopping cart functionality
β β βββ order/ # Order management
β β βββ dashboard/ # User dashboard
β βββ context/ # React Context providers
β βββ hooks/ # Custom React hooks
β βββ services/ # API service functions
β βββ reducers/ # State reducers
β βββ routes/ # Routing configuration
βββ data/
β βββ db.json # JSON Server database
β βββ routes.json # API route configuration
βββ tailwind.config.js # Tailwind CSS configuration
- Browse through a curated collection of educational eBooks and courses
- Filter products by price, rating, availability, and best-seller status
- Detailed product pages with comprehensive information
- Secure login and registration system
- Protected routes for authenticated users
- User profile management
- Add products to cart with quantity management
- Secure checkout process
- Order tracking and history
- Real-time search functionality
- Advanced filtering options
- Responsive search results
npm start- Runs the app in development modenpm test- Launches the test runnernpm run build- Builds the app for productionnpm run eject- Ejects from Create React App (one-way operation)
Create a .env file in the root directory:
REACT_APP_API_URL=http://localhost:8000The project uses Tailwind CSS with custom color scheme:
customBlack: #3a3a3acustomWhite: #ffffffcustomBackground: #232428customCard: #1A1A1D
The application uses JSON Server with the following endpoints:
GET /products- Get all productsGET /products/:id- Get specific productGET /featured_products- Get featured productsPOST /orders- Create new orderGET /orders- Get user ordersPOST /users- User registrationPOST /login- User authentication
Run the test suite:
npm test- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Create React App for the project setup
- Tailwind CSS for the styling framework
- React Router for client-side routing
- JSON Server for the mock backend
If you have any questions or need help, please open an issue in the GitHub repository.
Happy Reading! πβ¨