Nodejs ACM编程社区(node.js + express4 + mongodb),求fork
Nodejs ACM编程社区(node.js + express4 + mongodb),求fork
Github: https://github.com/KIDx/ACdream 网站地址: http://acdream.info/
Nodejs ACM编程社区 (node.js + express4 + mongodb),求fork
Github 地址
网站地址
项目介绍
这个项目是一个基于 Node.js、Express.js 和 MongoDB 的在线 ACM 编程社区。它允许用户注册账户、提交代码、参与竞赛以及查看排名等。该项目的主要功能包括:
- 用户管理:用户可以注册、登录、编辑个人资料。
- 问题列表:展示所有可用的编程题目,并支持搜索和分类。
- 提交代码:用户可以提交代码并查看评测结果。
- 排行榜:根据用户的提交情况生成排行榜。
技术栈
- Node.js: 服务器端 JavaScript 运行环境。
- Express.js: 一个简洁而灵活的 Node.js Web 应用程序框架。
- MongoDB: 非关系型数据库,用于存储用户信息、题目数据和提交记录。
安装与配置
-
克隆仓库
git clone https://github.com/KIDx/ACdream.git cd ACdream
-
安装依赖
npm install
-
配置环境变量 创建一个
.env
文件,并添加以下内容:MONGO_URI=mongodb://localhost:27017/acm JWT_SECRET=mysecretkey PORT=3000
-
启动应用
npm start
示例代码
以下是 app.js
中的一部分代码,展示了如何使用 Express.js 和 MongoDB 设置路由和中间件:
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const app = express();
// 配置中间件
app.use(bodyParser.json());
// 连接 MongoDB
mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('Connected to MongoDB'))
.catch(err => console.error('Failed to connect to MongoDB', err));
// 路由定义
app.get('/', (req, res) => {
res.send('Welcome to the ACM Programming Community!');
});
// 启动服务器
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
贡献指南
如果您对这个项目感兴趣,欢迎贡献您的代码!您可以提交 PR 或 Issue,帮助我们改进功能或修复 bug。请确保遵循以下步骤:
- 克隆仓库并创建新分支。
- 进行必要的修改并提交更改。
- 发起 Pull Request 并等待审核。
希望这个项目能为更多的开发者提供帮助,期待您的 fork 和贡献!
哈哈,好久没ac了
#真的好久没玩ACM了
- 0 卧槽在这里能看到KIDx神!话说我们oj的v2也在开发中 -。 - 也是用node,还有二小姐哦。
赞
赶脚楼主是只妹纸:)
kidx神是什么?可以吃么:)
express 4 的 route 真不习惯,还是 3 的简单明了。
项目虽然用express 4,但是route那边还没使用4的新写法~
Nodejs ACM编程社区(node.js + express4 + mongodb),求fork
介绍
我们创建了一个基于Node.js、Express 4和MongoDB的在线编程社区——ACdream。该项目托管在GitHub上,旨在为ACM/ICPC选手和其他编程爱好者提供一个交流和学习的平台。
功能介绍
- 题目管理: 可以添加、编辑和删除题目。
- 用户系统: 用户注册、登录和提交代码。
- 比赛系统: 创建和参与编程比赛。
- 排行榜: 显示用户的积分排名。
- 问题讨论区: 每个问题都有一个讨论区,方便用户讨论和交流。
示例代码
用户注册功能
-
安装必要的依赖:
npm install express mongoose body-parser
-
创建数据库模型:
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const UserSchema = new Schema({ username: { type: String, required: true, unique: true }, password: { type: String, required: true }, email: { type: String, required: true, unique: true } }); module.exports = mongoose.model('User', UserSchema);
-
实现注册API:
const express = require('express'); const router = express.Router(); const bcrypt = require('bcryptjs'); const User = require('../models/User'); router.post('/register', async (req, res) => { try { const { username, password, email } = req.body; if (!username || !password || !email) return res.status(400).send('All fields are required'); // Check if user already exists const existingUser = await User.findOne({ username }); if (existingUser) return res.status(409).send('Username already taken'); // Hash the password const hashedPassword = await bcrypt.hash(password, 10); // Create a new user const newUser = new User({ username, password: hashedPassword, email }); await newUser.save(); return res.status(201).json(newUser); } catch (error) { console.error(error); res.status(500).send('Internal server error'); } }); module.exports = router;
总结
该项目还有很多可以优化和完善的地方,非常欢迎有兴趣的开发者来参与贡献和改进。请帮助我们传播这个项目,并为我们提供建设性的反馈和建议!
GitHub链接: https://github.com/KIDx/ACdream
访问网站: http://acdream.info/