A gamified platform for learning computer science effectively and enjoyably.
Explore the docs »
View Repository
·
Report Bug
·
Request Feature
·
View Client
CSOneCup is a gamified platform designed to make learning computer science (CS) knowledge both engaging and effective. By integrating CS quizzes into a fun and interactive card format, the platform aims to cater to different audiences:
- Job Seekers: Effortlessly prepare for technical interviews and coding tests while managing time effectively.
- CS Students: Build a deeper understanding of CS subjects without the stress of traditional study methods.
- Junior Developers: Continue professional growth while enjoying a gamified learning experience.
CSOneCup empowers users by providing them with the ability to:
- Test and validate their knowledge through quizzes.
- Focus on weak areas by targeting specific categories.
- Create custom decks to share and compete with others.
The platform turns learning into a rewarding and motivating experience through friendly competition and personalization.
- Framework: Spring Boot 3.3.5
- Language: Java 17
- Database: MySQL (AWS RDS 연동)
- Security: Spring Security + JWT 인증
- API Documentation: Swagger (SpringDoc OpenAPI)
- Build Tool: Gradle
- Dependencies:
- Spring Data JPA
- Lombok
- JWT (jjwt) 0.12.3
- Framework: Flutter
- Language: Dart
- Platform: Cross-platform (iOS/Android)
2024년 11월 ~ 2024년 12월
csOneCup_server/
├── src/main/java/com/csOneCup/csOneCup/
│ ├── auth/ # JWT 인증 관련
│ │ ├── JWTFilter.java
│ │ └── JWTUtil.java
│ ├── card/ # 카드 관련 도메인
│ │ ├── Card.java
│ │ ├── CardController.java
│ │ ├── CardService.java
│ │ └── CardRepository.java
│ ├── deck/ # 덱 관련 도메인
│ │ ├── Deck.java
│ │ ├── DeckController.java
│ │ ├── DeckService.java
│ │ └── DeckRepository.java
│ ├── user/ # 사용자 관련 도메인
│ │ ├── User.java
│ │ ├── userController.java
│ │ ├── UserService.java
│ │ └── UserRepository.java
│ ├── statistics/ # 통계 관련
│ ├── dto/ # Data Transfer Objects
│ ├── config/ # Spring Security 설정
│ └── global/ # 전역 에러 처리 및 응답
│ ├── common/
│ └── error/
└── resources/
├── application.properties
└── dataset.csv # CS 퀴즈 데이터
POST /signup- 회원가입POST /signin- 로그인 (JWT 토큰 발급)GET /info- 사용자 정보 조회GET /all/info- 전체 사용자 정보 조회
GET /user- 사용자 보유 카드 조회 (카테고리/검색 필터링 가능)POST /user/add- 사용자에게 카드 추가POST /deck/add- 덱에 카드 추가POST /deck/new- 새 덱 생성 및 카드 추가GET /card- 랜덤 카드 조회 (카테고리별, 중복 여부 선택)
GET /{deckId}/cards- 특정 덱의 카드 목록 조회POST /- 새 덱 생성GET /random3- 랜덤 3개 덱 추천
-
CS Quiz Cards
Each problem is presented as a card with the question on the front and the answer (with explanations) on the back. -
Random Problem Solving
Users can solve random questions or select specific categories to focus on their interests. -
Custom Deck Building
Users can create personalized decks using owned cards, set categories and time limits, and share them with others to compete.
-
Competitive Element
A rating and ranking system to encourage users to compete and measure their progress against others. -
Card Design Customization
Unlock and apply design elements to personalize cards and decks, such as colors, animations, and styles. -
Quiz Reminders
Notifications to remind users of their scheduled learning times, with quick-access widgets for solving quizzes directly.
- Java Development Kit (JDK) 17:
- Install JDK 17 from Oracle or use your package manager:
sudo apt install openjdk-17-jdk
- Install JDK 17 from Oracle or use your package manager:
- Gradle:
- Install Gradle if not bundled with the project:
sudo apt install gradle
- Install Gradle if not bundled with the project:
- Flutter SDK:
- Install Flutter SDK from Flutter Official Site.
- Verify installation:
flutter doctor
- Dart SDK:
- Included with Flutter, no separate installation required.
- Android Studio or Xcode (For Device Emulation and Building Apps):
- Install Android Studio for Android development or Xcode for iOS development.
- Ensure required plugins (Flutter and Dart) are installed in your IDE.
- Clone the repository:
git clone https://github.com/CSOneCup/CSOneCup-server.git
- Navigate to the project directory:
cd CSOneCup-server - Build the project:
./gradlew build
- Run the Spring Boot server:
./gradlew bootRun
- Clone the repository:
git clone https://github.com/CSOneCup/CSOneCup-client.git
- Navigate to the Flutter project directory:
cd CSOneCup-client - Install dependencies:
flutter pub get
- Run the Flutter application:
flutter run
우리 팀은 컴퓨터과학 학습의 재미와 효과를 동시에 제공하는 플랫폼을 만들기 위해 모였습니다. 💪
