Skip to content

aliml92/anor

Repository files navigation

anor

License: MIT

Anor is a full-stack e-commerce application inspired by the functionality and design of Uzum, eBay, and Zalando. It uses Golang for the backend, HTMX and _hyperscript with Bootstrap for the frontend, and PostgreSQL, Redis, and Typesense for data storage, caching, and search capabilities.

Table of Contents

Features

  • User Authentication:

    • Signup
    • Signin
    • Forgot Password
    • Logout
    • Google Sign-in
  • Product listing page with categories:

    • Sort by:
      • Popularity
      • Price: Lowest
      • Price: Highest
      • Highest rated
      • New arrivals
      • Best sellers
    • Filter by:
      • Price range
      • Brand
      • Rating
      • Custom attributes (size, color, material, etc.)
    • Pagination:
      • Page-based navigation
      • "Show More" functionality (dynamically adds new product item cards)
  • Product Details Page:

    • Product details display
    • Additional product images carousel
    • Product reviews and ratings
    • Related products section
    • Add to cart button
  • Customer Profile Page:

    • Display user information
    • Order history
    • Edit profile functionality
    • Change password option
    • Address book management
  • Shopping cart functionality

  • Checkout and payment integration

  • Order tracking

  • Recommendation engine for products

  • Coupon and discount functionality

  • User review and rating system

  • Advanced search filters

  • Mobile app version

Installation

Prerequisites

Before installing the application, ensure you have the following tools installed on your machine:

  • Docker/Docker Compose.
  • sqlc: For generating type-safe code from SQL.
  • goose: For database migrations.
  • task: A task runner/simpler Make alternative written in Go.

Getting Started

To get the application running locally, follow these steps:

  1. Start necessary services

    Ensure you start Postgres, Typesense and Redis using Docker:

    task compose-up
  2. Run database migrations:

    Apply database migrations with goose::

    task goose-up
    
  3. Import sample data

    Populate the database with the initial dataset:

    task import-dataset
    
  4. Start the application

    Populate the database with the initial dataset:

    export CONFIG_FILEPATH=./config.dev.yaml
    go run cmd/anor/*.go
    

Project starts on port 8008 by default.

Additional Configuration

Adjust additional settings and configurations as needed:

  • Configuration Files: Customize config.dev.yaml as needed to tweak database connections, service endpoints, and other critical settings.

Testing

Coming soon

Learning Resources

Resources Used

Here are some of the resources that have been instrumental in the development of this eCommerce platform:

Resources to Explore

Future resources to deepen knowledge and enhance the application:

Contributing

Contributions to the project are welcome! If you have suggestions or improvements, please follow these steps:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature-branch).
  3. Make your changes and commit them (git commit -am 'Add some feature').
  4. Push to the branch (git push origin feature-branch).
  5. Create a new Pull Request.

We appreciate your input and look forward to improving the application together!

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

Ecommerce app written in go and htmx

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages