Skip to content

linux-do/credit

LINUX DO Credit

πŸš€ Linux Do Community Credit Service Platform

δΈ­ζ–‡

License: Apache2.0 Go Version Next.js React

GitHub release GitHub stars GitHub forks GitHub issues GitHub pull requests GitHub contributors

Backend Build Frontend Build Docker Build CodeQL ESLint

πŸ“– Introduction

LINUX DO Credit is a credit service platform built for the Linux Do community, aimed at providing a series of credit-related services and offering a foundational framework for credit circulation for community developers.

✨ Key Features

  • πŸ” OAuth2 Authentication - Integrated with Linux Do community account system
  • πŸ›‘οΈ Risk Control - Comprehensive trust level and risk assessment system
  • πŸ“Š Real-time Monitoring - Detailed distribution statistics and user behavior analysis
  • 🎨 Modern Interface - Responsive design based on Next.js 16 and React 19
  • ⚑ High Performance - Go Backend + Redis Cache + PostgreSQL Database

πŸ—οΈ Architecture Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Frontend      β”‚    β”‚    Backend      β”‚    β”‚   Database      β”‚
β”‚   (Next.js)     │◄──►│     (Go)        │◄──►│  (PostgreSQL)   β”‚
β”‚                 β”‚    β”‚                 β”‚    β”‚                 β”‚
β”‚ β€’ React 19      β”‚    β”‚ β€’ Gin Framework β”‚    β”‚ β€’ PostgreSQL    β”‚
β”‚ β€’ TypeScript    β”‚    β”‚ β€’ OAuth2        β”‚    β”‚ β€’ Redis Cache   β”‚
β”‚ β€’ Tailwind CSS  β”‚    β”‚ β€’ Session Store β”‚    β”‚                 β”‚
β”‚ β€’ Shadcn UI     β”‚    β”‚ β€’ OpenTelemetry β”‚    β”‚                 β”‚
β”‚                 β”‚    β”‚ β€’ Swagger API   β”‚    β”‚                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Backend

Frontend

πŸ“‹ Requirements

  • Go >= 1.25.5
  • Node.js >= 18.0
  • PostgreSQL >= 18
  • Redis >= 6.0
  • pnpm >= 8.0 (Recommended)

πŸš€ Quick Start

1. Clone the Project

git clone https://github.com/linux-do/credit.git
cd credit

2. Configure Environment

Copy the configuration file and edit it:

cp config.example.yaml config.yaml

Edit config.yaml to configure database connections, Redis, OAuth2, etc.

3. Initialize Database

# Create database
createdb -h <host> -p 5432 -U postgres linux_do_credit

# If you need to specify encoding, use:
# psql -h <host> -p 5432 -U postgres -c "CREATE DATABASE linux_do_credit WITH ENCODING 'UTF8' LC_COLLATE='zh_CN.UTF-8' LC_CTYPE='zh_CN.UTF-8' TEMPLATE template0;"

# Run migrations (automatically executed when starting the backend)

4. Start Backend

# Install Go dependencies
go mod tidy

# Generate API documentation
make swagger

# Start backend service
go run main.go api

5. Start Frontend

cd frontend

# Install dependencies
pnpm install

# Start development server
pnpm dev

6. Access Application

βš™οΈ Configuration

Main Configuration Options

Option Description Example
app.addr Backend service listening address :8000
oauth2.client_id OAuth2 Client ID your_client_id
database.host PostgreSQL database host 127.0.0.1
database.port PostgreSQL database port 5432
database.username PostgreSQL database username postgres
database.password PostgreSQL database password password
database.database PostgreSQL database name linux_do_credit
database.ssl_mode PostgreSQL SSL mode disable
database.application_name PostgreSQL application name credit-server
database.search_path PostgreSQL search path public
database.default_query_exec_mode SQL cache mode cache_statement
redis.host Redis server address 127.0.0.1

For detailed configuration instructions, please refer to the config.example.yaml file.

πŸ”§ Development Guide

Backend Development

# Run API server
go run main.go api

# Run task scheduler
go run main.go scheduler

# Run worker queue
go run main.go worker

# Generate Swagger documentation
make swagger

# Format and check code
make tidy

Frontend Development

cd frontend

# Development mode (using Turbopack)
pnpm dev

# Build production version
pnpm build

# Start production service
pnpm start

# Lint and format code
pnpm lint
pnpm format

πŸ“š API Documentation

API documentation is automatically generated by Swagger and can be accessed after starting the backend service:

http://localhost:8000/swagger/index.html

πŸ§ͺ Testing

# Backend testing
go test ./...

# Frontend testing
cd frontend
pnpm test

πŸš€ Deployment

Docker Deployment

# Build image
docker build -t linux-do-credit .

# Run container
docker run -d -p 8000:8000 linux-do-credit

Production Environment Deployment

  1. Build frontend resources:

    cd frontend && pnpm build
  2. Compile backend program:

    go build -o credit main.go
  3. Configure config.yaml for production

  4. Start service:

    ./credit api

🀝 Contribution Guidelines

We welcome community contributions! Please read the following before submitting code:

Submission Process

  1. Fork this repository
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Commit changes (git commit -am 'Add your feature')
  4. Push to branch (git push origin feature/your-feature)
  5. Create Pull Request

πŸ“„ License

This project is open source under the Apache2.0 License.

πŸ”— Related Links

❀️ Acknowledgements

Thanks to all developers who contributed to this project and the support of the Linux Do Community!

πŸ“ˆ Star History

Star History Chart