NP — полнофункциональная платформа электронной коммерции и пожертвований,
посвящённая морской и дикой природе Маврикия.
NP — это полиглотный микросервисный проект, объединяющий Go и Rust в единую экосистему. Платформа включает каталог товаров, корзину покупок, систему платежей, кошелёк для пожертвований и историю транзакций.
Все сервисы оркестрируются через Docker Compose, аутентификация построена на JWT (HS256) с хранением в cookie, база данных — PostgreSQL с GORM AutoMigrate.
┌─────────────┐
│ API Gateway │ (Go — :8080)
└──────┬──────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Web Service │ │User Service│ │Bank Service │
│ (Rust/Axum) │ │ (Go) │ │ (Go) │
│ :8081 │ │ :8084 │ │ :8083 │
└────────────┘ └────────────┘ └────────────┘
│
┌────────┴────────┐
│ Order Service │
│ (Go) │
│ :8082 │
└─────────────────┘
│
┌────────┴────────┐
│ PostgreSQL │
│ :5432 │
└─────────────────┘
| 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 |
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)
- 🛍️ Каталог товаров — просмотр и покупка мерча
- 🛒 Корзина — добавление, удаление, оформление
- 💰 Кошелёк — пополнение баланса, история операций
- 🎁 Донаты — пожертвования через банковский сервис
- 🔐 JWT-аутентификация — безопасная регистрация и вход
- 📱 Адаптивный UI — тёмно-бирюзовая тема океана
# 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
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 # Скрипт запуска
| 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 | Донат |
Распространяется под лицензией MIT. См. файл LICENSE для получения дополнительной информации.
Made with ❤️ by kempedron