RaidersALG

https://github.com/OCA-Hackathon/2025-03-Progate-Hackathon

Next.js

Go

AWS

DynamoDB

Amplify

RaidersALG 競技プログラミングプラットフォーム

JHSAND

towa

kmjak

推しアイデア

GoやRustにも対応し、提出→評価→結果表示までを完全自動化。ランク機能を実装し、初心者も競技勢も楽しめる!

作った背景

競技プログラミングの学習ハードルを下げたくて開発。手軽に提出&結果確認できる環境が欲しい、という自分たちの思いが出発点です。

推し技術

SQS→Lambda→ECS→S3の連携で非同期コード評価を実現。Monaco EditorやAmplify連携でUXも強化。結果はDynamoDB+S3で安定管理!

プロジェクト詳細

RaidersALGとは

Raiders(襲撃者)、ALG(アルゴリズム)の造語であり、競技プログラミングプラットフォーム

使用技術

フロントエンド: Next.js

バックエンド: Lambda(Go, Node.js)

構成図

image

  • Amplify - デプロイ(API routeがAmplifyで意図しない挙動を起こすため認証できません)
  • SQS - 非同期でLambdaを実行
  • DynamoDB - ユーザー情報 & 問題の管理
  • S3 - コードの保存・結果の保存
  • Lambda - S3(PUT)をトリガーにECSタスク起動&実行
  • ECR - code-judge & code-editerのImageを保存
  • ECS - 保存したImageをタスクとして起動

機能紹介

web editer Dockerコンテナ上にcode-serverやLSP(Language Server Protocol)を構築・設定し、VSCodeのような開発環境を提供する。

code judge 送信されたコードをコンテナ内で実行し、AC(Accepted)、TLE(Time Limit Exceeded)、WA(Wrong Answer)などの判定結果をフロントエンドに返す。

code feedback 判定後のコードをChatGPT APIを介して分析し、最適なコードかどうかを評価する。ユーザーはChatGPTが提案する最適なコードと自身のコードを比較しながら確認できる。

architecture

  • 機能別での整理 各機能(認証、問題管理、コンテストなど)が独立したフォルダ内で整理されており、コードの可読性と保守性が向上。
  • 再利用性とモジュール性 コンポーネントやロジックが機能単位で分割され、必要な部分だけを変更・追加することが容易。
  • スケーラビリティ アプリケーションが成長しても、新機能の追加や変更が他の部分に与える影響を最小限に抑える設計。
  • 責務の分離 各フォルダとファイルが明確な責務を持つため、コードの管理がしやすく、チーム開発に適している。

このアーキテクチャは、特に規模が大きくなるアプリケーションで効果を発揮し、機能追加や変更を効率的に行えるように設計。

実際のプロジェクトtree ./src ├── config │   ├── amplify │   └── sidebar ├── contexts │   └── auth ├── feature │   ├── auth │   │   ├── register │   │   │   └── components │   │   └── login │   │   └── components │   ├── footer │   ├── header │   │   └── components │   │   └── navigation │   ├── home │   │   └── components │   └── problems │   └── components ├── types │   └── amplify ├── usecase │   ├── crypto │   └── cookie ├── components │   └── ui └── app ├── api │   ├── auth │   │   ├── get │   │   └── post │   ├── logout │   ├── result │   └── upload ├── (auth) │   ├── register │   └── login └── (main)   ├── contests   │   └── components   ├── home   └── problems     └── [id]

JHSAND

@19db7af647de4aee