/gostart-crm

Handcrafted eCommerce CRM starter project in Go

Primary LanguageGoMIT LicenseMIT

gostart-crm

Overview

A powerful and simple e-commerce web application starter project. This open-source version includes core features such as:

  • Admin dashboard: Manage the platform through a rich user interface
  • Client view: Browse and filter products as a customer
  • Product management: Add, update, and manage product listings
  • Orders management: Track and process customer orders

Stack

  • Backend: Go with Echo, templ, sqlx;
  • Frontend: tailwind, htmx, alpine, w2ui (admin dashboard);

Live Demo

Structure

  • cmd/server: Main application entry point
  • internal/pkg: Bootstrapper package for initializing the app
  • internal/app/model: Contains shared data transfer objects (DTOs) and types
  • internal/app/component: HTML templates (.templ files) user for rendering views
  • internal/app/endpoint: Router and HTTP handlers
  • internal/app/service: Business logic and service layer
  • internal/app/storage: Database access layer
  • migrations: SQL migration scripts (Goose for versioning)
  • web: Static assets such as JS bundles, CSS, and fonts

Prerequisites

Make sure you have the following installed to run the project:

  • Go >= 1.23: Backend server
  • Bun >= 1.1: Build system for bundling assets

Build

Follow these steps to build and run the project:

cp .env.example .env  # prepare the '.env' with default settings
bun install           # install node dependencies
bun install:tools     # install necessary go tools into the 'build' folder
bun run build         # build the js, css, static, fonts, templ and go server
./build/server        # start the server
bun watch             # start the server in watch mode (live reload)

After starting the server, the application will be available at:

  • http://localhost:1323 (normal mode)
  • http://localhost:7331 (watch mode)

Screenshots

  • Admin Panel: The admin dashboard, showcasing product and order management. Admin

  • Client View: The front-end interface for customers to browse products. Client