Avanzar In Time Shop is a production-ready, self-hosted e-commerce platform built as a Bun monorepo. It ships three tightly integrated apps — a Hono REST API backend, a React admin dashboard, and an Astro storefront — backed by PostgreSQL via Drizzle ORM. The platform is purpose-built for manual payment confirmation workflows (Zelle, bank transfers, cash on delivery) and supports guest and authenticated checkout with server-side price calculation and atomic stock management.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ItsJhonAlex/Ecommerce/llms.txt
Use this file to discover all available pages before exploring further.
Quickstart
Spin up the full stack locally in minutes with Docker and Bun.
Architecture
Understand the monorepo structure, apps, and shared packages.
API Reference
Explore every REST endpoint — public storefront and admin routes.
Core Concepts
Learn how orders, payments, and the product catalog work together.
Platform Overview
The shop is organized as a monorepo with three applications and two shared packages:Backend
Hono API on Bun with Better Auth, Drizzle ORM, and OpenAPI/Swagger UI.
Admin Dashboard
React 19 SPA for managing products, orders, payments, and users.
Storefront
Astro-based public-facing shop with product catalog and checkout.
Key Features
Multi-Currency Pricing
Products support multiple currencies with prices stored in minor units (cents) per ISO 4217.
Manual Payment Confirmation
Admin staff confirm payments (Zelle, transfer, COD) manually with full audit trail.
Order State Machine
Orders follow a strict lifecycle: pending_payment → paid → preparing → shipped → delivered / cancelled.
Guest Checkout
Customers can check out without creating an account. Authenticated users get order history.
Atomic Stock Control
Stock is decremented atomically at checkout to prevent overselling under concurrency.
Role-Based Access
Three roles (customer, staff, admin) with route-level enforcement via Better Auth.
Get Started
Configure environment
Copy
.env.example to .env and fill in your database credentials and Better Auth secret.The backend runs on port 3000, the storefront on 4321, and the admin dashboard on 5174 by default. See the environment variables reference for all available options.