Digitalna Trgovina je sistem mikrostoritev za upravljanje digitalne trgovine z aplikacijami. Sestavljen je iz več ključnih mikrostoritev:
Osnovna storitev za upravljanje z aplikacijami v trgovini.
- Implementirano v Go
- gRPC/Connect API
- PostgreSQL podatkovna baza
- Supabase za shranjevanje datotek
Storitev za upravljanje z ocenami in komentarji aplikacij.
- Implementirano v Rust
- gRPC API + GraphQL
- PostgreSQL podatkovna baza
Storitev za avtentikacijo uporabnikov preko Auth0.
- Implementirano v Go
- gRPC API
- Integracija z Auth0
Storitev za procesiranje plačil.
- Implementirano v JavaScript (Bun runtime)
- RabbitMQ za komunikacijo
- Integracija s Stripe
Centralna vstopna točka za vse mikrostoritve.
- Implementirano v Go
- Usmerja zahteve na ustrezne mikrostoritve
- Upravlja avtentikacijo in avtorizacijo
- Go 1.22+
- Rust 1.75+
- Node.js/Bun
- Docker in Docker Compose
- Make
- Protocol Buffers (protoc)
- PostgreSQL 16
- RabbitMQ
- Supabase/MinIO (za shranjevanje datotek)
- Auth0 račun
- Stripe račun (za plačila)
- Kubernetes (opcijsko za produkcijo)
- Kloniraj repozitorij:
git clone https://github.com/RSO-ekipa-08/DigitalnaTrgovina.git
cd DigitalnaTrgovina
-
Ustvari potrebne .env datoteke za vsako storitev po vzorcu .env.example
-
Zaženi podatkovne baze:
docker compose up -d postgres rabbitmq minio
- Zaženi posamezne storitve:
App Service:
cd app-service
make migrate
make run
Reviews Service:
cd reviews
cargo run
Authentication Service:
cd authentication
go run src/main.go
Payment Service:
cd payment_v2
bun run src/index.ts
API Gateway:
cd api-gateway
go run src/main.go
make proto # v vsaki storitvi
https://rso-ekipa-08.github.io/DigitalnaTrgovina/
Sistem uporablja mikroservisno arhitekturo s sledečimi značilnostmi:
- gRPC za sinhrono komunikacijo med storitvami
- RabbitMQ za asinhrono komunikacijo (plačila)
- API Gateway za usmerjanje zahtev
- Auth0 za avtentikacijo
- PostgreSQL za shranjevanje podatkov
- Supabase/MinIO za shranjevanje datotek
Vse storitve uporabljajo okoljske spremenljivke za konfiguracijo. Glej .env.example datoteke v vsaki storitvi za potrebne nastavitve.