
Creations 3D
3D printing marketplace — Flutter app and NestJS API for physical prints, digital STL downloads, and creator/admin tooling.
Problem
Define the core challenge
Problem
3D creators had no unified platform to sell both printed physical products and downloadable model files, with separate tooling for shop management, order fulfillment, and digital asset delivery.
Insight
Designing a product model supporting DIGITAL, PHYSICAL, and BUNDLE types with variants and asset linking; securing digital downloads with signed Cloudinary URLs post-payment; aligning 56 backend endpoints with mobile datasources across three RBAC roles; manual payment flows (Nequi/COD) without Stripe; shipping quote integration for mixed carts.
Target
Design a system that improves speed, usability, and delivery confidence without adding maintenance overhead.
Process
How the work was executed
Discover
A full-stack 3D printing e-commerce platform where creators sell physical prints, digital model files (STL/OBJ/ZIP), and bundles. The Flutter app covers the full customer journey — browse, cart, checkout, order tracking, and signed digital downloads — plus in-app admin and creator studio panels. The NestJS backend exposes 56 REST endpoints with JWT/RBAC, Cloudinary media pipeline, Nequi/COD payments, and Docker-based local development.
Build
Built a monorepo with a modular NestJS API (Prisma/PostgreSQL, Cloudinary, Swagger, 19 e2e tests) and a Flutter app using Clean Architecture and Riverpod — supporting three roles (customer, creator, admin), multi-language UI, shipping quotes, manual payment confirmation, and time-limited signed download URLs for digital purchases.
Validate
Designing a product model supporting DIGITAL, PHYSICAL, and BUNDLE types with variants and asset linking; securing digital downloads with signed Cloudinary URLs post-payment; aligning 56 backend endpoints with mobile datasources across three RBAC roles; manual payment flows (Nequi/COD) without Stripe; shipping quote integration for mixed carts.
Solution
Translate constraints into a scalable solution
Process
A full-stack 3D printing e-commerce platform where creators sell physical prints, digital model files (STL/OBJ/ZIP), and bundles. The Flutter app covers the full customer journey — browse, cart, checkout, order tracking, and signed digital downloads — plus in-app admin and creator studio panels. The NestJS backend exposes 56 REST endpoints with JWT/RBAC, Cloudinary media pipeline, Nequi/COD payments, and Docker-based local development.
Solution
Built a monorepo with a modular NestJS API (Prisma/PostgreSQL, Cloudinary, Swagger, 19 e2e tests) and a Flutter app using Clean Architecture and Riverpod — supporting three roles (customer, creator, admin), multi-language UI, shipping quotes, manual payment confirmation, and time-limited signed download URLs for digital purchases.
Architecture
Monorepo: NestJS modular backend (13 domain modules, Prisma ORM, global JWT + RBAC, Cloudinary uploads, rate limiting) consumed by a Flutter Clean Architecture client (feature-first domain/data/presentation, Riverpod DI, dual Dio clients with token refresh, go_router navigation, 5-language i18n). Docker Compose for PostgreSQL 15 + backend; GitHub Actions CI for unit/e2e and Flutter analyze/tests.
Results
Ship measurable outcomes
Results
Complete local-dev marketplace with 56 API routes, multi-role Flutter app (shop + studio + admin), CI pipeline, idempotent seed data (21 products), and digital download flow verified in e2e tests — ready for production deployment and store publishing.
Impact
Business and product teams gained better reliability, clearer UX behavior, and a stronger foundation for iteration.
Next
The system now supports future features with less rework and more predictable frontend execution.
Tech stack
- Flutter
- Dart
- Riverpod
- NestJS
- TypeScript
- PostgreSQL
- Prisma
- Cloudinary
- Docker
- JWT
- Swagger