Nodejs ACM编程社区(node.js + express4 + mongodb),求fork

Nodejs ACM编程社区(node.js + express4 + mongodb),求fork

Github: https://github.com/KIDx/ACdream 网站地址: http://acdream.info/

10 回复

Nodejs ACM编程社区 (node.js + express4 + mongodb),求fork

Github 地址

网站地址


项目介绍

这个项目是一个基于 Node.js、Express.js 和 MongoDB 的在线 ACM 编程社区。它允许用户注册账户、提交代码、参与竞赛以及查看排名等。该项目的主要功能包括:

  1. 用户管理:用户可以注册、登录、编辑个人资料。
  2. 问题列表:展示所有可用的编程题目,并支持搜索和分类。
  3. 提交代码:用户可以提交代码并查看评测结果。
  4. 排行榜:根据用户的提交情况生成排行榜。

技术栈

  • Node.js: 服务器端 JavaScript 运行环境。
  • Express.js: 一个简洁而灵活的 Node.js Web 应用程序框架。
  • MongoDB: 非关系型数据库,用于存储用户信息、题目数据和提交记录。

安装与配置

  1. 克隆仓库

    git clone https://github.com/KIDx/ACdream.git
    cd ACdream
    
  2. 安装依赖

    npm install
    
  3. 配置环境变量 创建一个 .env 文件,并添加以下内容:

    MONGO_URI=mongodb://localhost:27017/acm
    JWT_SECRET=mysecretkey
    PORT=3000
    
  4. 启动应用

    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。请确保遵循以下步骤:

  1. 克隆仓库并创建新分支。
  2. 进行必要的修改并提交更改。
  3. 发起 Pull Request 并等待审核。

希望这个项目能为更多的开发者提供帮助,期待您的 fork 和贡献!


哈哈,好久没ac了

#真的好久没玩ACM了

  1. 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选手和其他编程爱好者提供一个交流和学习的平台。

功能介绍

  • 题目管理: 可以添加、编辑和删除题目。
  • 用户系统: 用户注册、登录和提交代码。
  • 比赛系统: 创建和参与编程比赛。
  • 排行榜: 显示用户的积分排名。
  • 问题讨论区: 每个问题都有一个讨论区,方便用户讨论和交流。

示例代码

用户注册功能

  1. 安装必要的依赖:

    npm install express mongoose body-parser
    
  2. 创建数据库模型:

    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);
    
  3. 实现注册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/

回到顶部