A learning project built with Express 5, featuring a full-stack interview progress tracker with session-based authentication.
基于 Express 5 的学习项目,包含一个支持 Session 登录认证的面试进度追踪网站。
- User registration and login (session-based) / 用户注册与登录(Session 认证)
- Add, view, edit, and delete interview records / 面试记录的增删改查
- JWT-based API login endpoint / JWT 接口登录
- EJS server-side rendering / EJS 服务端渲染
- Node.js
- MongoDB running locally on port
27017/ 本地 MongoDB 运行在27017端口
# Install dependencies / 安装依赖
npm install
# Start the server / 启动服务
node server.jsThe server runs at http://localhost:3000.
服务启动后访问 http://localhost:3000。
- Register an account at
/register/ 在/register注册账号 - Log in at
/login/ 在/login登录 - Click "我的面试记录" on the home page / 首页点击"我的面试记录"
- Add, edit, or delete interview entries / 添加、编辑或删除面试记录
├── server.js # Entry point / 入口文件
├── config/index.js # JWT secret key / JWT 密钥配置
├── models/
│ ├── user-model.js # User schema / 用户模型
│ └── interview-model.js # Interview record schema / 面试记录模型
├── route/
│ ├── web/
│ │ ├── index.js # Web routes (session auth) / Web 路由(Session 认证)
│ │ └── interviews.js # Interview CRUD routes / 面试记录 CRUD 路由
│ └── api/
│ ├── auth.js # JWT login API / JWT 登录接口
│ └── portrait.js # File upload API / 文件上传接口
├── middlewares/
│ ├── check-login-middleware.js # Session auth guard / Session 鉴权中间件
│ └── check-token-middleware.js # JWT auth guard / JWT 鉴权中间件
├── views/
│ ├── home.ejs / login.ejs / register.ejs
│ └── interviews/
│ ├── index.ejs # Interview list / 面试列表页
│ ├── new.ejs # Add record form / 新建表单
│ └── edit.ejs # Edit record form / 编辑表单
└── public/ # Static files / 静态资源
| Method | Path | Description |
|---|---|---|
POST |
/api/login |
JWT login, returns token / JWT 登录,返回 token |
POST |
/api/portrait |
Upload avatar (requires token header) / 上传头像(需 token 请求头) |
- Express 5 — Web framework / Web 框架
- MongoDB + Mongoose — Database / 数据库
- express-session + connect-mongo — Session management / Session 管理
- jsonwebtoken — JWT authentication / JWT 认证
- EJS — Template engine / 模板引擎
- formidable — File upload parsing / 文件上传解析