project-name/
server.js β Entry (<100 lines)
config.json β API keys, schedule, thresholds
db.js β DB init + utility functions
routes/
api.js β Query/export/stats API
task.js β Task management (CRUD/schedule)
data.js β Data ops (import/export/sync)
admin.js β Admin API
services/
crawler.js β Crawl/scrape logic
parser.js β Data parsing/cleaning
scheduler.js β Cron/interval scheduling
sync.js β Third-party sync (Feishu/Excel)
public/
index.html β HTML skeleton (<200 lines)
admin.html β Admin dashboard
css/style.css
js/
app.js β Main logic + routing
table.js β Table render/pagination/filter
chart.js β Charts (if needed)
api.js β Fetch wrapper
project-name/
server.js β Entry (<100 lines)
config.json
db.js
routes/
api.js β Core business API
content.js β Content CRUD
upload.js β File upload/processing
admin.js
services/
generator.js β Content generation
storage.js β File storage
public/
index.html, css/, js/
project-name/
server.js β Entry (<100 lines)
config.json β Targets/thresholds/alert rules
db.js
routes/
api.js β Data query API
monitor.js β Monitor/collect API
alert.js β Alert management
admin.js
services/
collector.js β Data collection
analyzer.js β Analysis/aggregation
notifier.js β Alert notifications
public/
index.html, css/
js/
dashboard.js β Dashboard rendering
chart.js β Charts
realtime.js β WebSocket updates (if needed)
api.js
project-name/
server.js β Entry (<100 lines)
config.json
routes/
v1/
resource-a.js
resource-b.js
admin.js
services/
core.js β Core business logic
queue.js β Task queue (if needed)
middleware/
auth.js β Auth middleware
rateLimit.js β Rate limiting
- Entry file = mounting only: express init + middleware + route mounting + listen
- Routes by domain: not by HTTP method, by business domain (user/data/task/admin)
- Shared logic β services/: crawlers, parsers, third-party API calls
- DB ops centralized:
db.jshandles table creation + common queries - Scheduled tasks isolated: all cron/interval logic in
services/scheduler.js
- HTML = skeleton only: structure tags + container divs + script/link refs
- CSS in separate file:
css/style.css, split by page for large projects - JS by function:
app.jsβ init + page routing/tab switchingapi.jsβ all fetch requeststable.jsβ table rendering (required for data tools)chart.jsβ chart rendering (if using ECharts/Chart.js)- Business modules in separate files
- No JS template literals (backticks): use string concatenation
{
"app": { "name": "Project Name", "port": 3456 },
"schedule": {
"enabled": true,
"interval": "*/30 * * * *",
"retryCount": 3
},
"api": { "rateLimit": 100, "timeout": 30000 },
"thirdParty": {
"feishu": { "appId": "", "appSecret": "" }
},
"admin": { "password": "xxx" }
}Rules:
- All tunable params in config.json
- Server loads at startup, serves
/api/config(strip secrets) - Admin dashboard hot-reloads config (no restart needed)
- Secrets never exposed to frontend
Every admin.html includes:
- Password login (
x-admin-passwordheader auth) - Runtime status: uptime, memory, request stats
- Config editor: visual edit + save = hot-reload
- Data overview: key metrics (users/data/tasks)
- Operation log: recent admin actions