Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NP

Mauritius Wildlife — E-Commerce & Donation Platform

Go 1.26 Rust Axum PostgreSQL Docker Compose JWT Auth License

NP — полнофункциональная платформа электронной коммерции и пожертвований,
посвящённая морской и дикой природе Маврикия.


Overview

NP — это полиглотный микросервисный проект, объединяющий Go и Rust в единую экосистему. Платформа включает каталог товаров, корзину покупок, систему платежей, кошелёк для пожертвований и историю транзакций.

Все сервисы оркестрируются через Docker Compose, аутентификация построена на JWT (HS256) с хранением в cookie, база данных — PostgreSQL с GORM AutoMigrate.


Architecture

                    ┌─────────────┐
                    │  API Gateway │  (Go — :8080)
                    └──────┬──────┘
                           │
          ┌────────────────┼────────────────┐
          ▼                ▼                ▼
   ┌────────────┐   ┌────────────┐   ┌────────────┐
   │ Web Service │   │User Service│   │Bank Service │
   │ (Rust/Axum) │   │  (Go)      │   │  (Go)       │
   │   :8081     │   │  :8084     │   │  :8083      │
   └────────────┘   └────────────┘   └────────────┘
                                       │
                              ┌────────┴────────┐
                              │  Order Service   │
                              │     (Go)         │
                              │     :8082        │
                              └─────────────────┘
                                       │
                              ┌────────┴────────┐
                              │   PostgreSQL     │
                              │     :5432        │
                              └─────────────────┘

Services

Service Language Port Description
api-gateway Go 8080 Reverse-proxy gateway, JWT middleware
web-service Rust (Axum) 8081 Frontend pages (index, about, buy-merch)
order-service Go 8082 Cart management, purchases
bank-service Go 8083 Wallet, donations, top-up, transactions
user-service Go 8084 Registration & authentication

Tech Stack

Backend:

  • Go 1.26 — микросервисы, gorilla/mux, gorm.io
  • Rust edition 2024 — web-service на axum 0.8
  • PostgreSQL 15 — основная БД
  • Docker Compose — оркестрация

Authentication & Security:

  • JWT (HS256, 24h expiry, cookie-based)
  • bcrypt password hashing

Frontend:

  • Server-side rendered Go templates
  • Ocean/teal design system (inline CSS)

Features

  • 🛍️ Каталог товаров — просмотр и покупка мерча
  • 🛒 Корзина — добавление, удаление, оформление
  • 💰 Кошелёк — пополнение баланса, история операций
  • 🎁 Донаты — пожертвования через банковский сервис
  • 🔐 JWT-аутентификация — безопасная регистрация и вход
  • 📱 Адаптивный UI — тёмно-бирюзовая тема океана

Quick Start

# 1. Клонирование
git clone https://github.com/kempedron/NP.git
cd NP

# 2. Запуск
./start.sh

start.sh выполняет: docker-compose down && docker-compose build --parallel && docker-compose up

После запуска сервис доступен по адресу: http://localhost:8080


Project Structure

NP/
├── cmd/
│   ├── api-gateway/       # Go — точка входа API Gateway
│   ├── web-service/       # Rust — frontend сервис
│   ├── order-service/     # Go — управление заказами
│   ├── bank-service/      # Go — банковский сервис
│   └── user-service/      # Go — пользовательский сервис
├── internal/
│   ├── analytic-service/  # stubs для аналитики
│   ├── database/          # GORM инициализация + миграции
│   ├── jwt/               # JWT генерация/валидация
│   ├── middleware/        # HTTP middleware
│   ├── models/            # Модели данных (GORM)
│   └── ...                # Бизнес-логика по сервисам
├── web/
│   ├── static/            # Статические файлы
│   └── templates/         # HTML шаблоны (Go + Rust)
├── docker-compose.yml     # Оркестрация сервисов
└── start.sh               # Скрипт запуска

API Endpoints

Method Path Service Description
GET / web-service Главная страница
GET /about-us web-service О нас
GET /buy-merch web-service Каталог товаров
GET/POST /register user-service Регистрация
GET/POST /login user-service Вход
GET /cart order-service Корзина
POST /cart/add order-service Добавить в корзину
POST /cart/delete order-service Удалить из корзины
POST /cart/purchase order-service Оформление покупки
GET /my-purchases order-service История покупок
GET /wallet bank-service Кошелёк
POST /wallet/top-up bank-service Пополнение баланса
POST /wallet/donate bank-service Донат

License

Распространяется под лицензией MIT. См. файл LICENSE для получения дополнительной информации.


Made with ❤️ by kempedron

About

web-site project

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages