Skip to content

Arjuna-Ragil/Project-CL

Repository files navigation

🚀 Core Life (Project-CL)

Build

Go Version React Version Postgres

A private personal ERP to organize my life, built with modern tech stack and enterprise-grade infrastructure.

🌐 Live Production: core-life.arjunaa.my.id

📖 About The Project

Core Life is a personal ERP that I build for myself (now for public) to manage day by day activity, like manage your academic, financial, and more to come

This project is not just a basic CRUD app, but this project act as my playground to show how I implement FullStack, DevOps, Security, Infrastructure (Self-Host), and automation that simulate industry standard in a smaller scale.

✨ Key Features

  • 🔐 Secure Authentication: Implementation of JWT Auth in the middleware
  • High Performance: Backend written in Golang to decrease latency and for high performance
  • 📱 Responsive UI: Frontend React that is responsive for desktop & mobile
  • 📚 Academic Module: Manage your classes, assignment, and your GPA
  • 💵 Financial Module: Manage your money based on your needs, wants, save, dan invest.
  • 🔜 More Modules to Come

🛠️ Tech-Stack

Frontend Backend Database Devops Infrastructure
React Golang Postgres Docker Ubuntu server
Tailwind Gin Github Action Cloudflare tunnel

🏗️ Infrastructure & Architecture

This project is being hosted on my own Home Server (Used Laptop).

🔄 CI/CD Pipeline

Every code that has pas the review will automatically be added to the repo by GitHub Actions:

  1. Branch dev: Auto-deploy to the Development environment (Port 8081/3001).
  2. Branch main: Auto-deploy to the Production environment (Port 8080/3000).

🛡️ Network & Security

  • Cloudflare Tunnel: Expose production to the public without port forwarding
  • Tailscale: Private access to development environtment that I use.
  • CORS Policy: Strict policy to separate API between dev and prod environtment

📐 Architecture Graph

graph TD
    User((Public User)) -->|HTTPS| CF[Cloudflare Tunnel]
    Dev((Me / Developer)) -->|Tailscale VPN| Server[Home Server]
    
    subgraph "Home Server (Docker Compose)"
        CF -->|Port 8080| BE_Prod[Backend Prod]
        CF -->|Port 3000| FE_Prod[Frontend Prod]
        
        BE_Prod --> DB_Prod[(Postgres Prod)]
        
        subgraph "Development Environment"
            BE_Dev[Backend Dev] --> DB_Dev[(Postgres Dev)]
            FE_Dev[Frontend Dev]
        end
    end
Loading

🌱 Getting Started (Local Development)

1. Git clone the project

Clone the project to open it locally

git clone https://github.com/Arjuna-Ragil/Project-CL.git
cd Project-CL

2. Create an .env in the root folder

Base config to start running the project

# Database config (change as needed)
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=secret
DB_NAME=cl_local_db
DB_PORT=5432

# Backend config
SECRET_KEY=Secret_key_that_you_can_change
AUTH_MODE=false (enable/disable auth middleware)

3. Create an .env.local in the FE folder

Env to enable communication between FE and BE

VITE_API_BASE_URL=http://localhost:8080/api (change to correspond your backend)

4. Run in docker

There are two choice on how to run the project:

# Only build the database, run the FE & BE separately (Recommended)
docker compose up -d --build db

# Build everything from docker
docker compose up -d --build

5. Access web

🤝 Contribution

This project is private, but I'm open to talk and discuss about Home Lab Architecture and Devops. Feel free to reach out!

Built with ❤️ and a lot of ☕ by Arjuna Ragil

About

A personal ERP for myself to organize my life, that you can now also use :)

Topics

Resources

Stars

Watchers

Forks

Languages