Online Marketplace for Local Artisans

Connect with talented local artisans and discover unique handmade products. A platform built with Kotlin and Ktor to showcase and sell artisanal goods.

View on GitHub

Key Features

User Authentication

Secure login and registration system for both artisans and customers, with role-based access control.

Artisan Profiles

Detailed profiles for artisans to showcase their work, story, and expertise to potential customers.

Product Listings

Comprehensive product management with categories, search, filtering, and high-quality image support.

Order Management

Streamlined order processing, tracking, and fulfillment system for both artisans and customers.

Secure Payments

Integration with payment gateways for secure transactions between customers and artisans.

Reviews & Ratings

Customer feedback system to build trust and help artisans improve their products and services.

Technology Stack

Backend

Kotlin, Ktor, Exposed ORM, PostgreSQL

Authentication

JWT, OAuth2, Password Hashing

API

RESTful API, JSON, Swagger Documentation

Testing

JUnit, MockK, TestContainers

DevOps

Docker, GitHub Actions, AWS

Frontend

HTML, CSS, JavaScript, React

Quick Start

Prerequisites

  • JDK 17 or higher
  • PostgreSQL 14 or higher
  • Docker (optional)

Installation

git clone https://github.com/arya458/ArtisanMarket.git
cd ArtisanMarket
./gradlew run

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

API Documentation

Comprehensive API documentation is available in the repository. Here's a quick example of the authentication endpoint:

Authentication

POST /api/auth/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "securepassword"
}

Response:
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 1,
    "name": "John Doe",
    "email": "user@example.com",
    "role": "CUSTOMER"
  }
}

For full API documentation, visit the API docs in the repository.

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/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please make sure to update tests as appropriate and follow the existing code style.