Cultiva Digital
Monte grátis a vitrine das suas plantas e terrários, compartilhe o link no Instagram e receba pedidos pelo WhatsApp.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Apparule Monorepo
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Fashion body-measurement and social-commerce platform — capture body measurements from a phone, keep them in a private vault, and commission outfits from designers with a frozen copy of your measurements.
Apparule is a monorepo containing the clients, backend services, deployment configuration, and documentation for the platform. A Go service owns the product API and all data, a Node gateway takes uploads, one Python service turns two phone photos into body measurements and another makes every payment decision, and a Next.js frontend serves the marketing site and user dashboard. The services talk over the shared Kafka. For the components and how they fit together, see docs/overview.md and the system design.
flowchart LR
subgraph clients
WEB[web + dashboard<br/>Next.js, App Hosting]
MOB[Flutter mobile]
end
GS[Google sign-in<br/>OAuth, Google only]
subgraph server["GCP Cloud Run (scale to zero)"]
AC[api/common, Go<br/>CRUD]
UP[api/uploads, Node<br/>upload gateway]
SG[api/segmentation, Python<br/>pose QC · measurements]
CM[api/commerce, Python<br/>payments · notifications]
end
subgraph data
PG[(managed Postgres)]
CS[(Cloud Storage)]
RD[(managed Redis)]
K[[shared Kafka]]
end
WEB --> GS
MOB --> GS
WEB --> AC
MOB --> AC
WEB --> UP
MOB --> UP
AC --> PG
AC --> RD
UP --> CS
UP --> K
AC <--> K
K <--> SG
K <--> CM
| Layer | Technology |
|---|---|
| Backend API | Go 1.26, Postgres with row-level security (api/common) |
| Upload gateway | Node 24, NestJS, sharp (api/uploads) |
| Measurement | Python 3.12, MediaPipe, OpenCV (api/segmentation) |
| Payments | Python 3.12, Paystack, FCM, Brevo (api/commerce) |
| Messaging | Kafka (a shared managed Kafka service) |
| Web | Next.js, React, TypeScript |
| Mobile | Flutter (primary), native Android/iOS |
| Auth & data | Google-only sign-in (session JWTs from common); managed Postgres (system of record) & Cloud Storage; shared managed Redis |
| Infrastructure | Docker, Helm, Terraform, GCP Cloud Run |
api/
common/ Go, the product API, the only Postgres client; Kafka contract
uploads/ Node, ticketed upload gateway
segmentation/ Python, pose QC and body measurements
commerce/ Python, payment decisions, push and email
web/ Next.js marketing site + user dashboard
mobile/
flutter/ Flutter app (primary mobile client)
android/ Native Android (Kotlin)
ios/ Native iOS (Swift)
deploy/
docker/ Container/compose configuration
helm/ Helm chart (deploys all services to Kubernetes)
terraform/ Infrastructure as code
docs/ Project documentation
scripts/ Developer and CI helper scripts
Additional services follow the same convention: api/common is the shared Go
backend, and every other service lives under api/<service-name> named by its
function (never by its language).
cp .env.example .env
make up # build + start the stack: web (:3000), common (:8080), segmentation (:8081),
# uploads (:8082), commerce (:8083), plus Postgres, Kafka, Redis, S3
make logs # follow logs
make down # stop
Configuration is provided at runtime via environment variables (names in
system-design.md §10.3); the compose defaults need
nothing but the local-only ticket key pair already in .env.example. See
docs/setup.md for details; make help lists all targets.
Never commit credentials or bake them into an image.
Hosted docs — the full documentation site (auto-synced from docs/)
Project overview — architecture and components
System design — services, transports, data ownership, flows
Local setup — development environment and per-service run commands
Contributions are welcome. Please read the Contributing guide and our Code of Conduct before opening a PR.
Please report vulnerabilities privately — see our Security policy.
See LICENSE.