Releases: drminnaar/offgrid
V2.1.0 - Stable Release
Offgrid v2.1.0 Release Notes
The focus of this release is to introduce product management.
🚀 Highlights
- Portal App: Product management pages, product details decomposition, improved filtering, and type consistency.
- Portal API: New endpoints for products and product variants.
- Infrastructure: Added MongoDB service, add MongoDb initialization, and build tasks for mongosh.
- Shared Libraries: MongoDB utilities, datetime conversion extensions, and enhanced query/filtering support.
- Docs & Onboarding: Updated onboarding docs for MongoDB and decision registry.
✨ Features
Portal App
- Product management pages with advanced filtering.
- Decomposed product details into reusable subcomponents.
- Improved type consistency by replacing interfaces with types.
Portal API
- Endpoint to retrieve product by product id.
- Endpoint to get product variants.
- Initial 'products' module.
Infrastructure
- Added MongoDB service to local stack.
- Build task for running mongosh.
- Improved dictionary key casing in MongoDB seed data.
Shared Libraries
- MongoDB utilities for .NET.
- Extension to convert datetime to Unix time (seconds).
- QueryOptions abstraction for filtering.
- Factory method for empty PagedList.
Docs & Onboarding
- Updated onboarding documentation for MongoDB.
- Added decision registry documentation and summary.
🛠️ Improvements & Refactoring
- Decomposed product details into subcomponents for maintainability.
- Replaced interfaces with types for consistency in portal app.
- Refactored IMongoQuery to QueryOptions in shared libraries.
- Introduced protected IEventHandler property to RabbitMqConsumerClientBase.
V2.0.0 - Stable Release
Offgrid v2.0.0 Release Notes
🚀 Highlights
- Portal App: Customer detail page, customer list with filters, pagination, and improved navigation.
- Portal API: Full customer management endpoints (list, detail, suspend, reinstate), outbox pattern, event processor, and robust validation.
- Infrastructure: Outbox/event processor, RabbitMQ integration, improved Flyway migrations, and enhanced local dev scripts.
- Shared Libraries: New DDD/domain abstractions, enum utilities, pagination, and messaging contracts.
- Docs & Onboarding: Comprehensive agent guidance, onboarding, and design documentation.
✨ Features
Portal App
- Customer detail page and related UI components
- Customer list page: table, filters, pagination, drawer nav, API integration
- Keycloak authentication, Redux Toolkit state, theme toggle
- Routing, login, and not found page
Portal API
- Paginated "Get All Customers" endpoint
- "Get Customer By Id" endpoint with validation
- Filter customers by status
- Customer suspend/reinstate endpoints and domain events
- Customer change tracking with Unit of Work
- Outbox pattern for reliable event publishing
- EventProcessor service with Spectre.Console visualization
Infrastructure
- RabbitMQ service and integration
- Flyway migrations for customer, outbox, and change tracking tables
- Dev helper scripts for infra, psql, rabbitmqadmin
Shared Libraries
- Enum extensions, pagination utilities, DDD/domain abstractions
- Messaging contracts, CNCF cloud event factory
Docs & Onboarding
- Agent guidance, onboarding, and reorganized documentation
- Portal and shop design docs
🛠️ Improvements & Refactoring
- Refactored project into a simpler monorepo layout
- Improved JSON serialization, error handling, and validation
- Added concurrency handling for customer updates
- Enhanced scripts and tasks for local development
🐞 Bug Fixes & Chores
- Fixed formatting, naming, and improved code organization
- Updated scripts to match new directory structure
- Fixed broken documentation links
📚 Documentation
- See README.md for project overview and getting started.
- See docs/onboarding.md for onboarding steps.
- See docs/portal/design/version-1/README.md for portal API and event processor design.
- See services/portal/README.md for portal API overview
- See apps/portal-app/README.md for portal application overview
🎉 Thank You
Thank you for exploring Offgrid v2.0.0! This release focused on implementing the initial backoffice system called Portal.
For detailed information about any component, please refer to the respective README files and documentation linked throughout this release notes.
V1.0.0 - Initial Stable Release
Offgrid v1.0.0 Release Notes
🎉 Initial Release
This is the initial release of Offgrid, a comprehensive demonstration e-commerce platform for an adventure gear retail business. This release establishes the foundational architecture, infrastructure, and application framework for building modern, scalable e-commerce systems.
📋 Overview
Offgrid is an e-commerce monorepo demonstrating various practices for building applications using .NET 10, Next.js, and React. The platform includes a customer-facing shopping website and infrastructure for future staff portal development.
What is Offgrid?
Offgrid is a fictitious e-commerce business operating as an online retail destination for adventure enthusiasts, offering a curated selection of adventure gear for exploration and outdoor pursuits. It specializes in biking, winter sports, and water sports equipment.
🏗️ Architecture & Design
Organizational Design
- Domain-Driven Design (DDD) approach with comprehensive documentation:
Monorepo Structure
The project follows a well-organized monorepo strategy with clear separation of concerns:
offgrid/
├── apps/ # Primary applications
│ ├── shop/ # Customer-facing e-commerce website
│ │ ├── shop-app/ # Next.js web application
│ │ ├── shop-api/ # .NET 10 API
│ │ └── docs/ # Shop system design documentation
│ └── portal/ # Staff portal (framework ready)
│
├── libs/ # Shared libraries
│ ├── dotnet/ # .NET shared libraries
│ └── typescript/ # TypeScript shared libraries
│
├── infra/ # Infrastructure as code
│ └── local/ # Local development environment
│ ├── postgres/ # PostgreSQL configuration
│ ├── keycloak/ # Keycloak configuration
│ └── scripts/ # Infrastructure automation
│
├── docs/ # Comprehensive documentation
│ ├── design/ # Design documentation
│ ├── standards/ # Standards and conventions
│ └── images/ # Documentation images
│
└── scripts/ # Automation and utility scripts
🤖 Technology Stack
Languages & Frameworks
- C# 14 with .NET 10 - High-performance backend APIs and services
- TypeScript - Type-safe frontend development
- Next.js - React framework with SSR/SSG for the shopping website
- React - Component-based UI library (framework established for staff portal)
- Node.js - JavaScript runtime for Next.js and tooling
- Bash - Shell scripting for automation and DevOps workflows
Infrastructure & Services
- PostgreSQL - Primary relational database with ACID compliance
- Keycloak - Identity and access management (OIDC/OAuth2/SAML support)
- Flyway (Red Hat) - Database migration and version control
DevOps & Tooling
- Docker & Docker Compose - Containerization and local orchestration
- Git - Version control with established conventions
- VS Code - Recommended IDE with full stack support
🚀 Features & Components
Infrastructure Services
Docker Compose Orchestration
- Multi-service orchestration using Docker Compose
- Modular compose file structure with include directives
- Automated service lifecycle management
Database Services
- PostgreSQL - Production-ready relational database
- Flyway - Automated database migrations
Identity & Access Management
- Keycloak - Full-featured identity provider
- Realm configuration for Offgrid
- SSO, user federation, and role-based access control
Automation Scripts
compose.sh- Docker Compose wrapper for service managementpsql.sh- PostgreSQL client access scriptflyway.sh- Database migration management
Shop Application
Shop Web Application
- Next.js framework with TypeScript
- Responsive design
- Docker containerization support
- Environment-based configuration
Shop API
- .NET 10 RESTful API
- C# 14 language features
- Clean architecture patterns
- Docker containerization support
Design Documentation
- Version 1 architecture and design
- API specifications
- Database schema design
Development Experience
Prerequisite Validation
Comprehensive validation scripts to ensure proper development environment:
prereq-check.sh- Master script running all prerequisite checkstool-installation-check.sh- Verifies installation of required tools:- Node.js 24
- .NET 10
- Git
- Docker Desktop
- npm
- Optional tools (Azure CLI, Terraform, AWS CLI, etc.)
env-file-check.sh- Validates environment configuration fileshost-file-entry-check.sh- Checks required host file entries
Service Management Scripts
run-infra-services.sh- One-command infrastructure startup- Starts PostgreSQL, Keycloak, and all infrastructure services
- Runs Flyway migrations automatically
run-shop-services.sh- One-command shop services startup- Starts shop-app (Next.js) and shop-api (.NET) in Docker
Standards & Conventions
Git Standards
- Commit Convention - Structured commit message format
- Format:
<type>(<scope>): <subject> - Types: feat, fix, docs, style, refactor, test, chore, etc.
- Detailed guidelines for writing meaningful commits
- Format:
- Git Setup Guide - Repository configuration and best practices
- Branch naming conventions
- Pull request workflows
- Code review guidelines
Documentation Standards
- Comprehensive README files at every level
- Architecture decision records
- Design documentation with diagrams
- Getting started guides
📦 What's Included
✅ Delivered in v1.0.0
Applications
- ✅ Shop web application (Next.js + TypeScript)
- ✅ Shop API (.NET 10 + C# 14)
- ✅ Docker containerization for both services
Infrastructure
- ✅ PostgreSQL database with Docker configuration
- ✅ Keycloak identity provider with realm setup
- ✅ Flyway database migration framework
- ✅ Docker Compose multi-service orchestration
- ✅ Automated infrastructure management scripts
Development Tools
- ✅ Comprehensive prerequisite validation scripts
- ✅ One-command service startup scripts
- ✅ Database access and migration utilities
- ✅ Environment configuration templates
Documentation
- ✅ Main project README with getting started guide
- ✅ Domain-Driven Design comprehensive guide
- ✅ Organizational and strategic design documents
- ✅ Git standards and commit conventions
- ✅ Infrastructure setup and configuration guide
- ✅ Application-specific README files
- ✅ Technology stack overview with badges
Design Assets
- ✅ Cover image and branding
- ✅ Technology stack diagrams
- ✅ Architecture overview diagrams
🎯 Getting Started
Prerequisites
Required Tools
- Node.js 24
- .NET 10
- Git
- Docker Desktop
- npm (comes with Node.js)
- WSL or Git Bash (Windows users)
Optional Tools
- Azure CLI (for Azure deployments)
- Terraform (for IaC)
- AWS CLI (for AWS deployments)
- jq (JSON parsing in scripts)
- yq (YAML parsing in scripts)
Quick Start
1. Verify Prerequisites
# Run comprehensive prerequisite check
./scripts/prereq-check.sh
# Or run individual checks:
./scripts/tool-installation-check.sh
./scripts/env-file-check.sh
./scripts/host-file-entry-check.sh2. Start Infrastructure Services
# One-command infrastructure startup
./scripts/run-infra-services.sh
# Or manually:
./infra/local/scripts/compose.sh up
./infra/local/scripts/flyway.sh migrate3. Start Shop Services (Optional - Docker)
# Run shop services in Docker
./scripts/run-shop-services.sh
# Or run outside Docker (recommended for development):
# - See apps/shop/shop-app/README.md
# - See apps/shop/shop-api/README.mdAccess Points
Once services are running, access them at:
- Shop Website: http://localhost:3000
- Shop API: http://localhost:7000
- Keycloak Admin Console: http://localhost:8080
Database Access
# Connect to PostgreSQL
./infra/local/scripts/psql.sh
# Check Flyway migration status
./infra/local/scripts/flyway.sh info
# Run migrations
./infra/local/scripts/flyway.sh migrate📚 Documentation
Main Documentation
- Project README - Project overview, getting started, and quick reference
- Infrastructure Guide - Local development infrastructure setup
Application Documentation
- Shop App README - Next.js application details
- Shop API README - .NET API documentation
- Shop Design v1 - Architecture and design
Design & Architecture
- Domain-Driven Design Guide - DDD principles and patterns
- Organizational Design - Business context and structure
- Strategic Design - Strategic DDD patterns
Standards & Conventions
- Git Commit Convention - Structured commit messages
- Git Setup Guide - Repository configuration and workflows
🔧 Configuration
Environment Files
All services use...