Navigation Admin / ็ฝๅๅฏผ่ชๅๅฐ็ฎก็็ณป็ป
English | ไธญๆ
Navigation Admin is a lightweight backend management system built with Go, designed for managing navigation page data. It uses SQLite as the database and automatically generates static JSON files for optimal frontend performance.
Go + Gin Framework - High performance, low resource usage
SQLite Database - No external database server required, single file storage
Auto JSON Generation - Database changes automatically regenerate nav.json
Embedded Resources - Templates and static files compiled into single binary
RESTful API - Standard REST API design
Session Authentication - Secure login with bcrypt password hashing
File Upload - Support for logos and downloadable files
Data Import/Export - Full JSON data import and export
Transaction Protection - All write operations protected by database transactions
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Frontend Browser โ
โ โ
โ Admin Panel (/admin) Navigation Page (/) โ
โ โ โ โ
โ โผ โผ โ
โ REST API (/api/admin) Static nav.json โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โฒ
โผ โ Auto-generate
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Go Backend โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโ โ
โ โ Handlers โโโโMiddlewareโโโโ Models โโโโ Database โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ utils/navjson.go โ โ
โ โ (Generate nav.json on data change) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Language: Go 1.21+
Web Framework: Gin
Database: SQLite (modernc.org/sqlite - pure Go, no CGO)
Password: bcrypt
Template: Go embed (compiled into binary)
Method 1: Docker Deployment (Recommended)
# Enter project directory
cd goversion
# Create data directories
sudo mkdir -p /home/docker/navigo/{data,uploads,static}
sudo chown -R 1000:1000 /home/docker/navigo
# Start with Docker Compose
docker-compose up -d --build
# View logs
docker-compose logs -f navigo
Access at: http://localhost:8787
For detailed Docker deployment guide, see DOCKER.md
# Enter project directory
cd goversion
# Download dependencies
go mod tidy
# Run (development)
go run main.go
# Build (production)
go build -o nav-admin.exe # Windows
go build -o nav-admin # Linux/Mac
# Run compiled binary
./nav-admin
Default credentials: admin / admin
Environment variables (optional):
Variable
Default
Description
SERVER_PORT
8080
Server port
SERVER_MODE
release
Gin mode (debug/release)
DB_PATH
./data/admin.db
SQLite database path
UPLOAD_PATH
./uploads
Upload directory
NAV_JSON_PATH
../static/nav.json
nav.json output path
SESSION_SECRET
(built-in)
Session encryption key
goversion/
โโโ main.go # Entry point, routes
โโโ go.mod # Dependencies
โโโ config/
โ โโโ config.go # Configuration management
โโโ models/
โ โโโ user.go # User model
โ โโโ category.go # Category model
โ โโโ site.go # Site model
โ โโโ announcement.go # Announcement model
โ โโโ page_config.go # Page config model
โโโ handlers/
โ โโโ auth.go # Login/logout
โ โโโ category.go # Category CRUD
โ โโโ site.go # Site CRUD
โ โโโ announcement.go # Announcement CRUD
โ โโโ upload.go # File upload
โ โโโ nav.go # Navigation data & import/export
โโโ middleware/
โ โโโ auth.go # Authentication middleware
โโโ utils/
โ โโโ database.go # Database initialization
โ โโโ response.go # Unified response format
โ โโโ navjson.go # JSON file generator
โโโ templates/
โ โโโ index.html # Navigation page
โ โโโ login.html # Login page
โ โโโ admin.html # Admin panel
โโโ static/ # All resources embedded into binary
โโโ style.css # Main stylesheet
โโโ themify-icons.css # Icon font stylesheet
โโโ jquery.js # jQuery library
โโโ nav-go.js # Navigation page JavaScript
โโโ logo.png # Logo image
โโโ logo.svg # Logo vector
โโโ nav.json # Auto-generated navigation data
โโโ fonts/ # Themify icon fonts
โ โโโ themify.eot
โ โโโ themify.svg
โ โโโ themify.ttf
โ โโโ themify.woff
โโโ lunar/
โโโ lunar.js # Chinese lunar calendar library
Method
Endpoint
Description
POST
/api/login
Login
GET
/api/check-auth
Check login status
POST
/api/admin/logout
Logout
Method
Endpoint
Description
GET
/api/admin/categories
Get all categories
GET
/api/admin/categories/:id
Get single category
POST
/api/admin/categories
Create category
PUT
/api/admin/categories/:id
Update category
DELETE
/api/admin/categories/:id
Delete category
PUT
/api/admin/categories/sort
Update sort order
Method
Endpoint
Description
GET
/api/admin/categories/:id/sites
Get sites by category
GET
/api/admin/sites/:id
Get single site
POST
/api/admin/sites
Create site
PUT
/api/admin/sites/:id
Update site
DELETE
/api/admin/sites/:id
Delete site
PUT
/api/admin/sites/sort
Update sort order
Method
Endpoint
Description
GET
/api/admin/announcements
Get all announcements
POST
/api/admin/announcements
Create announcement
PUT
/api/admin/announcements/:id
Update announcement
DELETE
/api/admin/announcements/:id
Delete announcement
GET
/api/admin/announcement-config
Get config
PUT
/api/admin/announcement-config
Update config
Method
Endpoint
Description
GET
/api/admin/page-config
Get page config
PUT
/api/admin/page-config
Update page config
Method
Endpoint
Description
POST
/api/admin/upload
Upload file
DELETE
/api/admin/upload
Delete file
GET
/api/admin/files
List files
Method
Endpoint
Description
GET
/api/admin/export
Export all data
POST
/api/admin/import
Import data
{
"code" : 0 ,
"message" : " success" ,
"data" : { }
}
code: 0 = Success
code: 400 = Bad request
code: 401 = Unauthorized
code: 404 = Not found
code: 500 = Server error
Backend as Source of Truth - Database is the single source, frontend only displays
Read/Write Separation - Frontend reads static JSON, backend writes to DB and generates JSON
Static-First - Navigation pages are read-heavy, static files provide best performance
Single Binary - All resources embedded, one file deployment
GPLv3
็ฝๅๅฏผ่ชๅๅฐ็ฎก็็ณป็ปๆฏไธไธชไฝฟ็จGo่ฏญ่จๆๅปบ็่ฝป้็บงๅๅฐ็ฎก็็ณป็ป๏ผ็จไบ็ฎก็ๅฏผ่ช้กต้ขๆฐๆฎใไฝฟ็จSQLiteไฝไธบๆฐๆฎๅบ๏ผ่ชๅจ็ๆ้ๆJSONๆไปถไปฅ่ทๅพๆไฝณๅ็ซฏๆง่ฝใ
Go + Ginๆกๆถ - ้ซๆง่ฝ๏ผไฝ่ตๆบๅ ็จ
SQLiteๆฐๆฎๅบ - ๆ ้ๅค้จๆฐๆฎๅบๆๅกๅจ๏ผๅๆไปถๅญๅจ
่ชๅจJSON็ๆ - ๆฐๆฎๅๆด่ชๅจ้ๆฐ็ๆnav.json
่ตๆบๅตๅ
ฅ - ๆจกๆฟๅ้ๆๆไปถ็ผ่ฏๅฐๅไธชไบ่ฟๅถๆไปถ
RESTful API - ๆ ๅREST API่ฎพ่ฎก
Session่ฎค่ฏ - ๅฎๅ
จ็ปๅฝ๏ผbcryptๅฏ็ ๅ ๅฏ
ๆไปถไธไผ - ๆฏๆLogoๅๅฏไธ่ฝฝๆไปถไธไผ
ๆฐๆฎๅฏผๅ
ฅๅฏผๅบ - ๅฎๆด็JSONๆฐๆฎๅฏผๅ
ฅๅฏผๅบ
ไบๅกไฟๆค - ๆๆๅๆไฝไฝฟ็จๆฐๆฎๅบไบๅกไฟๆค
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅ็ซฏๆต่งๅจ โ
โ โ
โ ็ฎก็ๅๅฐ (/admin) ๅฏผ่ช้กต้ข (/) โ
โ โ โ โ
โ โผ โผ โ
โ REST API (/api/admin) ้ๆ nav.json โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โฒ
โผ โ ่ชๅจ็ๆ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Go ๅ็ซฏ โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโ โ
โ โ Handlers โโโโMiddlewareโโโโ Models โโโโ Database โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ utils/navjson.go โ โ
โ โ (ๆฐๆฎๅๆดๆถ็ๆnav.json) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
่ฏญ่จ๏ผ Go 1.21+
Webๆกๆถ๏ผ Gin
ๆฐๆฎๅบ๏ผ SQLite (modernc.org/sqlite - ็บฏGoๅฎ็ฐ๏ผๆ CGO)
ๅฏ็ ๅ ๅฏ๏ผ bcrypt
ๆจกๆฟ๏ผ Go embed๏ผ็ผ่ฏๅฐไบ่ฟๅถๆไปถ๏ผ
ๆนๅผไธ๏ผDocker้จ็ฝฒ๏ผๆจ่๏ผ
# ่ฟๅ
ฅ้กน็ฎ็ฎๅฝ
cd goversion
# ๅๅปบๆฐๆฎ็ฎๅฝ
sudo mkdir -p /home/docker/navigo/{data,uploads,static}
sudo chown -R 1000:1000 /home/docker/navigo
# ไฝฟ็จ Docker Compose ๅฏๅจ
docker-compose up -d --build
# ๆฅ็ๆฅๅฟ
docker-compose logs -f navigo
่ฎฟ้ฎๅฐๅ๏ผhttp://localhost:8787
่ฏฆ็ป็Docker้จ็ฝฒๆๅ่ฏทๆฅ็ DOCKER.md
ๆนๅผไบ๏ผ็ดๆฅ่ฟ่กไบ่ฟๅถๆไปถ
# ่ฟๅ
ฅ้กน็ฎ็ฎๅฝ
cd goversion
# ไธ่ฝฝไพ่ต
go mod tidy
# ่ฟ่ก๏ผๅผๅๆจกๅผ๏ผ
go run main.go
# ็ผ่ฏ๏ผ็ไบง้จ็ฝฒ๏ผ
go build -o nav-admin.exe # Windows
go build -o nav-admin # Linux/Mac
# ่ฟ่ก็ผ่ฏๅ็็จๅบ
./nav-admin
้ป่ฎค่ดฆๅท๏ผ admin / admin
็ฏๅขๅ้๏ผๅฏ้๏ผ๏ผ
ๅ้
้ป่ฎคๅผ
่ฏดๆ
SERVER_PORT
8080
ๆๅกๅจ็ซฏๅฃ
SERVER_MODE
release
Ginๆจกๅผ๏ผdebug/release๏ผ
DB_PATH
./data/admin.db
SQLiteๆฐๆฎๅบ่ทฏๅพ
UPLOAD_PATH
./uploads
ไธไผ ๆไปถ็ฎๅฝ
NAV_JSON_PATH
../static/nav.json
nav.json่พๅบ่ทฏๅพ
SESSION_SECRET
(ๅ
็ฝฎ้ป่ฎค)
Sessionๅ ๅฏๅฏ้ฅ
goversion/
โโโ main.go # ๅ
ฅๅฃๆไปถ๏ผ่ทฏ็ฑ้
็ฝฎ
โโโ go.mod # ไพ่ต็ฎก็
โโโ config/
โ โโโ config.go # ้
็ฝฎ็ฎก็
โโโ models/
โ โโโ user.go # ็จๆทๆจกๅ
โ โโโ category.go # ๅ็ฑปๆจกๅ
โ โโโ site.go # ็ซ็นๆจกๅ
โ โโโ announcement.go # ๅ
ฌๅๆจกๅ
โ โโโ page_config.go # ้กต้ข้
็ฝฎๆจกๅ
โโโ handlers/
โ โโโ auth.go # ็ปๅฝ/็ปๅบ
โ โโโ category.go # ๅ็ฑปๅขๅ ๆนๆฅ
โ โโโ site.go # ็ซ็นๅขๅ ๆนๆฅ
โ โโโ announcement.go # ๅ
ฌๅๅขๅ ๆนๆฅ
โ โโโ upload.go # ๆไปถไธไผ
โ โโโ nav.go # ๅฏผ่ชๆฐๆฎใๅฏผๅ
ฅๅฏผๅบ
โโโ middleware/
โ โโโ auth.go # ่ฎค่ฏไธญ้ดไปถ
โโโ utils/
โ โโโ database.go # ๆฐๆฎๅบๅๅงๅ
โ โโโ response.go # ็ปไธๅๅบๆ ผๅผ
โ โโโ navjson.go # JSONๆไปถ็ๆๅจ
โโโ templates/
โ โโโ index.html # ๅฏผ่ช้กต้ข
โ โโโ login.html # ็ปๅฝ้กต้ข
โ โโโ admin.html # ็ฎก็ๅๅฐ
โโโ static/ # ๆๆ่ตๆบๅตๅ
ฅๅฐไบ่ฟๅถๆไปถ
โโโ style.css # ไธปๆ ทๅผ่กจ
โโโ themify-icons.css # ๅพๆ ๅญไฝๆ ทๅผ
โโโ jquery.js # jQueryๅบ
โโโ nav-go.js # ๅฏผ่ช้กต้ขJavaScript
โโโ logo.png # Logoๅพ็
โโโ logo.svg # Logo็ข้ๅพ
โโโ nav.json # ่ชๅจ็ๆ็ๅฏผ่ชๆฐๆฎ
โโโ fonts/ # Themifyๅพๆ ๅญไฝ
โ โโโ themify.eot
โ โโโ themify.svg
โ โโโ themify.ttf
โ โโโ themify.woff
โโโ lunar/
โโโ lunar.js # ไธญๅฝๅๅๅบ
ๆนๆณ
็ซฏ็น
่ฏดๆ
POST
/api/login
็ปๅฝ
GET
/api/check-auth
ๆฃๆฅ็ปๅฝ็ถๆ
POST
/api/admin/logout
็ปๅบ
ๆนๆณ
็ซฏ็น
่ฏดๆ
GET
/api/admin/categories
่ทๅๆๆๅ็ฑป
GET
/api/admin/categories/:id
่ทๅๅไธชๅ็ฑป
POST
/api/admin/categories
ๅๅปบๅ็ฑป
PUT
/api/admin/categories/:id
ๆดๆฐๅ็ฑป
DELETE
/api/admin/categories/:id
ๅ ้คๅ็ฑป
PUT
/api/admin/categories/sort
ๆดๆฐๆๅบ
ๆนๆณ
็ซฏ็น
่ฏดๆ
GET
/api/admin/categories/:id/sites
่ทๅๅ็ฑปไธ็็ซ็น
GET
/api/admin/sites/:id
่ทๅๅไธช็ซ็น
POST
/api/admin/sites
ๅๅปบ็ซ็น
PUT
/api/admin/sites/:id
ๆดๆฐ็ซ็น
DELETE
/api/admin/sites/:id
ๅ ้ค็ซ็น
PUT
/api/admin/sites/sort
ๆดๆฐๆๅบ
ๆนๆณ
็ซฏ็น
่ฏดๆ
GET
/api/admin/announcements
่ทๅๆๆๅ
ฌๅ
POST
/api/admin/announcements
ๅๅปบๅ
ฌๅ
PUT
/api/admin/announcements/:id
ๆดๆฐๅ
ฌๅ
DELETE
/api/admin/announcements/:id
ๅ ้คๅ
ฌๅ
GET
/api/admin/announcement-config
่ทๅๅ
ฌๅ้
็ฝฎ
PUT
/api/admin/announcement-config
ๆดๆฐๅ
ฌๅ้
็ฝฎ
ๆนๆณ
็ซฏ็น
่ฏดๆ
GET
/api/admin/page-config
่ทๅ้กต้ข้
็ฝฎ
PUT
/api/admin/page-config
ๆดๆฐ้กต้ข้
็ฝฎ
ๆนๆณ
็ซฏ็น
่ฏดๆ
POST
/api/admin/upload
ไธไผ ๆไปถ
DELETE
/api/admin/upload
ๅ ้คๆไปถ
GET
/api/admin/files
่ทๅๆไปถๅ่กจ
ๆนๆณ
็ซฏ็น
่ฏดๆ
GET
/api/admin/export
ๅฏผๅบๆๆๆฐๆฎ
POST
/api/admin/import
ๅฏผๅ
ฅๆฐๆฎ
{
"code" : 0 ,
"message" : " success" ,
"data" : { }
}
code: 0 = ๆๅ
code: 400 = ่ฏทๆฑ้่ฏฏ
code: 401 = ๆชๆๆ
code: 404 = ๆชๆพๅฐ
code: 500 = ๆๅกๅจ้่ฏฏ
ๅ็ซฏไธบๆฐๆฎๆบ - ๆฐๆฎๅบๆฏๅฏไธๆฐๆฎๆบ๏ผๅ็ซฏๅช่ด่ดฃๅฑ็คบ
่ฏปๅๅ็ฆป - ๅ็ซฏ่ฏปๅ้ๆJSON๏ผๅ็ซฏๅๅ
ฅๆฐๆฎๅบๅนถ็ๆJSON
้ๆๅไผๅ
- ๅฏผ่ช้กต่ฏปๅคๅๅฐ๏ผ้ๆๆไปถๆง่ฝๆไผ
ๅๆไปถ้จ็ฝฒ - ๆๆ่ตๆบๅตๅ
ฅ๏ผๅไธชๆไปถๅณๅฏ่ฟ่ก
-- ็จๆท่กจ
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL ,
password TEXT NOT NULL ,
created_at DATETIME,
updated_at DATETIME
);
-- ๅ็ฑป่กจ
CREATE TABLE categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
id_str TEXT NOT NULL ,
classify TEXT NOT NULL ,
icon TEXT NOT NULL ,
sort_no INTEGER DEFAULT 0
);
-- ็ซ็น่กจ
CREATE TABLE sites (
id INTEGER PRIMARY KEY AUTOINCREMENT,
cat_id INTEGER NOT NULL ,
name TEXT NOT NULL ,
href TEXT NOT NULL ,
description TEXT ,
logo TEXT ,
sort_no INTEGER DEFAULT 0 ,
FOREIGN KEY (cat_id) REFERENCES categories(id) ON DELETE CASCADE
);
-- ๅ
ฌๅ่กจ
CREATE TABLE announcements (
id INTEGER PRIMARY KEY AUTOINCREMENT,
timestamp TEXT NOT NULL ,
content TEXT NOT NULL
);
-- ๅ
ฌๅ้
็ฝฎ่กจ
CREATE TABLE announcement_config (
id INTEGER PRIMARY KEY CHECK (id = 1 ),
interval INTEGER DEFAULT 5000
);
-- ้กต้ข้
็ฝฎ่กจ
CREATE TABLE page_config (
id INTEGER PRIMARY KEY CHECK (id = 1 ),
title TEXT ,
subtitle TEXT ,
logo TEXT ,
footer_text TEXT ,
icp TEXT
);
[
{
"_id" : " announcement_config" ,
"type" : " announcement_config" ,
"interval" : 5000 ,
"announcements" : [
{"id" : 1 , "timestamp" : " 2025-01-01" , "content" : " ๅ
ฌๅๅ
ๅฎน" }
]
},
{
"_id" : " category_id" ,
"classify" : " ๅ็ฑปๅ็งฐ" ,
"icon" : " ti-cloud" ,
"sites" : [
{
"name" : " ็ซ็นๅ็งฐ" ,
"href" : " https://example.com" ,
"desc" : " ็ซ็นๆ่ฟฐ" ,
"logo" : " static/icons/logo.png"
}
]
}
]
ๅฏ็ ไฝฟ็จbcryptๅ ๅฏๅญๅจ
nav.jsonไธๅ
ๅซไปปไฝๆๆไฟกๆฏ๏ผ็จๆทใๅฏ็ ็ญ๏ผ
็ฎก็ๆฅๅฃ้่ฆSession่ฎค่ฏ
ๆไปถไธไผ ๆ็ฑปๅๅๅคงๅฐ้ๅถ
ๆๆๆฐๆฎๅบๅๆไฝไฝฟ็จไบๅกไฟๆค
GPLv3