Skip to content

shelcia/CRM

Tiny CRM

Customer Relationship Management — React + Go

Star History Chart

Introduction

Tiny CRM is a full-stack customer relationship management app with role-based access for admins, managers, and employees. Built with a React + TypeScript frontend and a Go backend.

Tech Stack

Frontend

  • React 19 + TypeScript + Vite 8
  • Tailwind CSS v4 + shadcn/ui (Radix UI primitives)
  • DM Sans Variable font, oklch green/lime palette
  • TanStack Table v8, Formik + Yup, React Router v7
  • Lucide React icons, react-hot-toast

Backend

  • Go 1.21 + Gin
  • MongoDB via mongo-driver
  • JWT authentication, AES-256-GCM encryption
  • SMTP email (gomail + Gmail) with background scheduler

Features

Module What it does
Contacts Full CRUD, CSV import/export, notes, server-side search + filters
Tickets Support ticket tracking with status/priority/category filters
Pipeline Kanban deal board with stage tracking
Projects Kanban project boards with drag-and-drop columns and task cards
Emails Template builder with scheduling (one-time/daily/weekly/monthly); background goroutine fires emails via Gmail SMTP
Email Groups Group contacts for bulk email campaigns
Users Role-based access control (admin / manager / employee)
Dashboard Stats overview: contacts, tickets, projects, users, recent activity
Company Company profile + logo upload

Getting Started

Docker (recommended)

cp backend/.env.example backend/.env   # fill in your credentials
docker compose up --build

Manual

# Backend
cd backend
cp .env.example .env   # fill in DB_CONNECT, EMAIL_ID, EMAIL_PWD, TOKEN_SECRET, CRYPTR_SECRET
go mod download
go run main.go

# Frontend (separate terminal)
cd frontend
npm install
npm run dev

Project Structure

CRM/
├── docker-compose.yml
├── frontend/              # React 19 + TypeScript + Vite 8
│   └── src/
│       ├── components/    # Reusable UI (CustomTable, CardSection, buttons, etc.)
│       ├── pages/admin/   # Route pages (contacts, tickets, pipeline, projects, emails, users…)
│       ├── hooks/         # useEnums, usePermissions
│       └── services/      # Axios API client + per-resource model wrappers
└── backend/               # Go REST API
    ├── handlers/          # Route handlers (one file per resource)
    ├── models/            # MongoDB models
    ├── middleware/        # JWT auth, rate limiter
    ├── scheduler/         # Background email scheduler (fires templates on schedule)
    ├── templates/         # Transactional email HTML templates
    └── utils/             # SMTP sender, AES crypto helpers

Demo Credentials

After running go run ./cmd/seed (or via Docker):

Role Email Password
Admin admin@acmecorp.com admin123
Manager manager@acmecorp.com admin123
Member member@acmecorp.com admin123

Contributing

PRs Welcome

  • Open an issue before starting major work
  • Fork the repo and create a branch for your fix or feature
  • Submit a pull request with a clear description and screenshots if relevant
  • Read CODE_OF_CONDUCT.md before contributing

About

Customer relations management tool built in Go + Typescript

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages