惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
博客园 - Franky
Martin Fowler
Martin Fowler
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
Recent Announcements
Recent Announcements
The Cloudflare Blog
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
J
Java Code Geeks
B
Blog RSS Feed
博客园 - 三生石上(FineUI控件)
MongoDB | Blog
MongoDB | Blog
腾讯CDC
博客园_首页
博客园 - 司徒正美
D
DataBreaches.Net
I
InfoQ
GbyAI
GbyAI
IT之家
IT之家
罗磊的独立博客

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders
GitHub - anthonybudd/Express-ts-API-Template: Production-...
johnsmith207 · 2026-04-25 · via Hacker News - Newest: "AI"

A mimimal REST API template using Express.ts, Sequelize and MySQL.

  • 🔑 Auth using JWT's with Passport.js. Optional 2FA.
  • ✅ Full Test Coverage with Mocha.js
  • 🔐 Local SSL Termination with NGINX. Optional.
  • 👥 Simple DB Structure: Users -⚟ GroupsUsers ⚞- Groups
  • 🖥️ ShadCN x Vue3 UI: AnthonyBudd/Shadcn-Vue-SaaS-Template
  • 🥇 Real-world tested, handled over $50M of live transactions

YouTube Video
Getting Started: youtu.be/nA5UFuqjQgk

git clone git@github.com:anthonybudd/express-ts-api-template.git
cd express-ts-api-template

# [Optional] Find & Replace (case-sensaive, whole repo): "express-api" => "your-api-name" 
LC_ALL=C find . -type f -name '*.*' -exec sed -i '' s/express-api/your-api-name/g {} +

# Local SSL Cert for HTTPS and RSA key for JWT signing
openssl req -x509 -nodes -days 825 -newkey rsa:2048 -keyout key.pem -out cert.pem -subj "/CN=localhost/O=dev/C=US"
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -outform PEM -pubout -out public.pem

# Start app
cp .env.example .env
npm install
docker compose up
npm run exec:db:refresh
npm run exec:test

# [Optional] Code generation command
npm run generate -- --model="Book"
npm run exec:db:refresh

DB Structure

The DB structure is the optimum balance of functionality and minimalism. A User can belong to many Groups through the GroupsUsers table. This allows you to make very basic single-user applications that do not even require the concept of groups or full SaaS solutions with complex User-Group relationships.

+--------------+           +---------------+         +--------------+  
| Users        | --------⚟ | GroupsUsers   | ⚞------ | Groups       |  
|--------------|           |---------------|         |--------------|  
| id           |           | id            |         | id           |  
| email        |           | groupID       |         | name         |  
| password     |           | userID        |         | ownerID      |  
| firstName    |           | role          |         | createdAt    |  
| lastName     |           | createdAt     |         | updatedAt    |
| createdAt    |           | updatedAt     |         +--------------+  
| updatedAt    |           +---------------+                                            
| ...          |                                                      
+--------------+                      

OpenAPISpec

Above each route you will see a large comment block with the decorator @swagger, these comments are optional and can be removed if you do not want them. To generate a new OpenAPISpec run the command npm run exec:openapispec

I have found when building large commercial API's that it is far more practical to document the routes next to the code rather than manually updating the OpenAPISpec each time a route is created or modified.

/**
 * @swagger
 * /auth/login:
 *   post:
 *     description: Get an access token
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *         ... 
 */
app.post('/auth/login', [

Generate SDK Client Libraries

There is an OpenAPISpec in the root of the repo. The project includes code generation config files for PHP, JavaScript and Swift. Use the below command to generate SDK Client Libraries for your API to /sdk/dist. A full list of supported langauages can be found here.

npm run build-sdk

Deployment

Full Kubernetes deployment instructions can be found in k8s/Deployment.md.

kubectl apply -f .k8s/api.deployment.yml \
  -f .k8s/api.ingress.yml \
  -f .k8s/api.service.yml 

Routes

Method Route Description Payload Response
GET /_readiness Kuber readiness check -- "healthy"
Auth
POST /api/v1/auth/login Login {email, password} {accessToken}
POST /api/v1/auth/sign-up Sign-up {email, password, firstName, tos} {accessToken}
GET /api/v1/_authcheck Returns {auth: true} if has auth -- {auth: true}
GET /api/v1/auth/verify-email/:emailVerificationKey Verify email -- {success: true}
GET /api/v1/auth/resend-verification-email Resend verification email -- {email}
POST /api/v1/auth/forgot Forgot {email} {success: true}
GET /api/v1/auth/get-user-by-reset-key/:passwordResetKey Get user for given passwordResetKey -- {id, email}
POST /api/v1/auth/reset Reset password {email, password, passwordResetKey} {accessToken}
GET /api/v1/auth/get-user-by-invite-key/:inviteKey Get user for given inviteKey -- {id, email}
POST /api/v1/auth/invite Complete user invite process {inviteKey, email, password, ...} {accessToken}
User
GET /api/v1/user Get the current user {User}
POST /api/v1/user Update the current user {firstName, lastName} {User}
POST /api/v1/user/update-password Update password {password, newPassword} {success: true}
Groups
GET /api/v1/groups/:groupID Returns group by ID -- {Group}
POST /api/v1/groups/:groupID Update group by ID {name: 'New Name'} {Group}
POST /api/v1/groups/:groupID/users/invite Invite user to group {email} {UserID, GroupID}
POST /api/v1/groups/:groupID/users/:userID/resend-invitation-email Resend invitation email {} {email}
POST /api/v1/groups/:groupID/users/:userID/set-role Set user role {role: 'User'/'Admin' } {UserID, role}
DELETE /api/v1/groups/:groupID/users/:userID Remove user from group -- {UserID}

Commands

There are a few helper scripts and commands for interacting with the application.

Some commands need to be run inside the docker container, these commands have been aliased with an underscore prefix, for exmaple npm run exec:db:refresh is an alias for docker exec -ti express-api npm run db:refresh which actually runs ./src/scripts/refresh

Command Description Exmaple
generate.ts Code generation npm run generate -- --model="book"
renderEmail.ts Generate an email locally docker exec -ti express-api ts-node ./src/scripts/renderEmail.ts --template="Verify" --code="512616" --link="https://google.com"
jwt.ts Generate JWT for a user docker exec -ti express-api ts-node ./src/scripts/jwt.ts --userID="c4644733-deea-47d8-b35a-86f30ff9618e"
forgotPassword.ts Generate password reset link docker exec -ti express-api ts-node ./src/scripts/forgotPassword.ts --userID="c4644733-deea-47d8-b35a-86f30ff9618e"
setPassword.ts Set user password docker exec -ti express-api ts-node ./src/scripts/setPassword.ts --userID="c4644733-deea-47d8-b35a-86f30ff9618e" --password="password"