Develop a Bicycle Store application featuring user-friendly functionalities, secure authentication, and efficient product management. Ensure the application is responsive, free of errors, and visually appealing.
- Users can register by providing their name, email, and password. By default, users are assigned the "customer" role.
- Admin roles can be updated manually; no "super admin" feature is required.
- Passwords must be hashed securely before being stored in the database.
- Users log in using their email and password.
- Generate a JWT token upon login for secure authentication.
- Store the token in local storage to maintain user sessions.
- Remove the token from local storage upon logout and redirect users to the login page.
- Navbar: Include a logo, navigation items, and buttons for login/signup and other actions.
- Banner: Showcase special offers or features using a carousel if preferred.
- Featured Bicycles: Display up to 6 bicycles with a "View All" button redirecting to the "All Bicycles" Page.
- Extra Section: Add content relevant to e-commerce, such as testimonials.
- Footer: Include important links, social media icons, and contact details.
- Search Functionality: Allow users to search by brand, bicycle name, or category.
- Filters: Implement options for price range, model, brand, category, and availability.
- Dynamic Results: Update results based on search queries or selected filters.
- Bicycle Cards: Display details including name, brand, model, price, and category, with a "View Details" button for each.
- Show the bicycle image and detailed specifications.
- Provide a "Buy Now" button that redirects to the checkout page.
- Create a page detailing your bicycle shop and its mission, including any other relevant information.
- Users can order bicycles.
- Ensure the ordered quantities do not exceed available stock.
- Order Form: Include product details, user details, total price calculation, and payment method.
- Payment Integration: Integrate SurjoPay, Stripe, or any other payment gateway of your choice.
- Include an "Order Now" button to finalize the purchase.
- Admin Dashboard: Manage users (e.g., deactivate accounts), products (CRUD), and orders (CRUD).
- User Dashboard: View orders and manage profile settings. Allow users to update passwords (requiring the current password for security).
- Ensure optimal performance across all screen sizes, maintaining alignment, typography, and intuitive layouts.
- Provide user-friendly error messages for:
- Invalid login credentials.
- Registration issues (e.g., duplicate email).
- Failed operations (e.g., products out of stock).
- Display loaders or spinners during API calls like login or data fetching.
- Notify users of important actions (e.g., "Login successful," "Order placed," etc.).
- Bicycle Comparison Tool: Compare up to 3 bicycles side-by-side. Display specifications, pricing, and features to help users make informed decisions.
- Sales Dashboard
- Overview Chart: Display a summary of sales data with visual charts (e.g., bar charts, line charts, or pie charts) for better analysis.
- Key Metrics:
- Total Sales Revenue: Show total revenue over a selectable time period.
- Units Sold: Display the number of bicycles sold.
- Top-Selling Bicycles: Highlight the most popular models with sales figures.
- Use MongoDB with a schema including:
- Users (defined roles: customer, admin)
- Bicycles (with attributes like name, brand, price, model, stock)
- Orders (linked to user, product details, total price, status)
- Implement user registration, login, JWT token management, and logout.
- Ensure secure password hashing and user session handling.
- Implement CRUD operations for bicycles (create, read, update, delete).
- Execute CRUD operations for orders (create, read, update, delete), ensuring stock levels before orders are placed.
- Utilize SurjoPay, AmaarPay, SSLCommerz, or Stripe for payment processing.
- Establish consistent, user-friendly error messaging for invalid login attempts, out-of-stock bicycles, etc.
- Ensure backend APIs support pagination for bicycle listings and order retrieval.
- Add authentication middleware to protect private routes, including checkout and the dashboard.
You can use any existing backend if you have developed it earlier or create a new version modifying from the existing older one.