mirror of
https://github.com/sabazadam/Se302.git
synced 2025-12-31 20:31:22 +00:00
497 lines
12 KiB
Markdown
497 lines
12 KiB
Markdown
# GETTING STARTED - Exam Scheduling System
|
|
|
|
**Welcome to the Exam Scheduling System project!**
|
|
|
|
This document will help you get started with the project quickly.
|
|
|
|
---
|
|
|
|
## Project Setup Complete! ✅
|
|
|
|
The project foundation has been fully set up with:
|
|
|
|
### Documentation Created
|
|
- ✅ **MEMORY_BANK.md** - Comprehensive project documentation (100+ pages)
|
|
- ✅ **ROADMAP.md** - Detailed 10-week development plan
|
|
- ✅ **TEAM_ASSIGNMENTS.md** - Team roles and responsibilities
|
|
- ✅ **GIT_WORKFLOW.md** - Git branching strategy and PR process
|
|
- ✅ **README.md** - Project overview and quick start guide
|
|
|
|
### Project Structure
|
|
- ✅ Maven `pom.xml` with all dependencies configured
|
|
- ✅ Directory structure created (`src/main/java`, `src/test/java`, `src/main/resources`)
|
|
- ✅ Package structure ready (`model`, `dao`, `service`, `algorithm`, `controller`, `util`)
|
|
- ✅ `.gitignore` configured for Java/Maven project
|
|
- ✅ GitHub Actions CI/CD pipeline (`.github/workflows/ci.yml`)
|
|
|
|
---
|
|
|
|
## Quick Start for Team Members
|
|
|
|
### 1. Clone the Repository
|
|
|
|
```bash
|
|
git clone https://github.com/sabazadam/se302.git
|
|
cd se302
|
|
```
|
|
|
|
### 2. Install Prerequisites
|
|
|
|
**Required:**
|
|
- Java JDK 17 or higher - [Download](https://adoptium.net/)
|
|
- Maven 3.8+ - [Download](https://maven.apache.org/download.cgi)
|
|
- Git - [Download](https://git-scm.com/)
|
|
|
|
**Recommended:**
|
|
- IntelliJ IDEA (recommended) or Eclipse - [Download IntelliJ](https://www.jetbrains.com/idea/download/)
|
|
- Scene Builder (for FXML editing) - [Download](https://gluonhq.com/products/scene-builder/)
|
|
|
|
### 3. Build the Project
|
|
|
|
```bash
|
|
mvn clean install
|
|
```
|
|
|
|
This will:
|
|
- Download all dependencies
|
|
- Compile the code
|
|
- Run tests (when we have them)
|
|
- Create a JAR file
|
|
|
|
### 4. Open in IDE
|
|
|
|
**IntelliJ IDEA:**
|
|
1. File → Open
|
|
2. Select the `pom.xml` file
|
|
3. Click "Open as Project"
|
|
4. Wait for dependencies to download
|
|
|
|
**Eclipse:**
|
|
1. File → Import
|
|
2. Maven → Existing Maven Projects
|
|
3. Select the project directory
|
|
4. Finish
|
|
|
|
### 5. Configure JDK 17
|
|
|
|
**IntelliJ:**
|
|
- File → Project Structure → Project → SDK → Select JDK 17
|
|
|
|
**Eclipse:**
|
|
- Right-click project → Properties → Java Build Path → Libraries → Add JDK 17
|
|
|
|
---
|
|
|
|
## First Steps for Each Team Member
|
|
|
|
### Database Lead (Kerem)
|
|
|
|
**Week 1 Tasks:**
|
|
1. Read [MEMORY_BANK.md](MEMORY_BANK.md) - Database Schema section
|
|
2. Create `schema.sql` in `src/main/resources/database/`
|
|
3. Implement DAO interfaces
|
|
4. Start with StudentDAO and test it
|
|
|
|
**Getting Started:**
|
|
```bash
|
|
git checkout develop
|
|
git pull origin develop
|
|
git checkout -b feature/database-schema
|
|
|
|
# Create your database schema file
|
|
# Edit src/main/resources/database/schema.sql
|
|
# Then commit and push
|
|
```
|
|
|
|
### Algorithm Specialist (Milena)
|
|
|
|
**Week 1 Tasks:**
|
|
1. Read [MEMORY_BANK.md](MEMORY_BANK.md) - Algorithm Design section
|
|
2. Create domain model classes (Student, Course, Classroom, etc.)
|
|
3. Start designing constraint validator
|
|
|
|
**Getting Started:**
|
|
```bash
|
|
git checkout develop
|
|
git pull origin develop
|
|
git checkout -b feature/domain-models
|
|
|
|
# Create model classes in src/main/java/com/se302/examscheduler/model/
|
|
# Start with Student.java, Course.java
|
|
```
|
|
|
|
### UI/FXML Specialist (Rabia)
|
|
|
|
**Week 1 Tasks:**
|
|
1. Read [MEMORY_BANK.md](MEMORY_BANK.md) - User Interface Design section
|
|
2. Install Scene Builder
|
|
3. Create wireframes for main window
|
|
4. Start FXML for MainWindow
|
|
|
|
**Getting Started:**
|
|
```bash
|
|
git checkout develop
|
|
git pull origin develop
|
|
git checkout -b feature/ui-main-window
|
|
|
|
# Create FXML files in src/main/resources/fxml/
|
|
# Design with Scene Builder
|
|
```
|
|
|
|
### Controller Lead (Sefa)
|
|
|
|
**Week 1 Tasks:**
|
|
1. Read [MEMORY_BANK.md](MEMORY_BANK.md) - Controller Layer section
|
|
2. Create Main.java application entry point
|
|
3. Design controller architecture
|
|
|
|
**Getting Started:**
|
|
```bash
|
|
git checkout develop
|
|
git pull origin develop
|
|
git checkout -b feature/main-controller
|
|
|
|
# Create Main.java in src/main/java/com/se302/examscheduler/
|
|
# Set up JavaFX application structure
|
|
```
|
|
|
|
### Testing Lead (Feyza)
|
|
|
|
**Week 1 Tasks:**
|
|
1. Read [MEMORY_BANK.md](MEMORY_BANK.md) - Testing Strategy section
|
|
2. Set up test utilities (TestDataBuilder)
|
|
3. Verify CI/CD pipeline works
|
|
4. Create test data fixtures
|
|
|
|
**Getting Started:**
|
|
```bash
|
|
git checkout develop
|
|
git pull origin develop
|
|
git checkout -b feature/test-infrastructure
|
|
|
|
# Create test utilities in src/test/java/com/se302/examscheduler/util/
|
|
# Create test CSV files in src/test/resources/
|
|
```
|
|
|
|
### Documentation Lead (Emin)
|
|
|
|
**Week 1 Tasks:**
|
|
1. Review all documentation created
|
|
2. Set up JavaDoc generation
|
|
3. Create documentation templates
|
|
4. Review first PRs from team
|
|
|
|
**Getting Started:**
|
|
```bash
|
|
# Generate JavaDoc
|
|
mvn javadoc:javadoc
|
|
open target/site/apidocs/index.html
|
|
|
|
# Set up documentation watching
|
|
# Review team members' code for documentation quality
|
|
```
|
|
|
|
---
|
|
|
|
## Important Files to Read
|
|
|
|
### MUST READ (Everyone)
|
|
1. **README.md** - Project overview and quick start
|
|
2. **MEMORY_BANK.md** - Comprehensive documentation (read your section)
|
|
3. **ROADMAP.md** - Week-by-week plan (see your tasks)
|
|
4. **TEAM_ASSIGNMENTS.md** - Your role and responsibilities
|
|
5. **GIT_WORKFLOW.md** - How to use Git, commit messages, PRs
|
|
|
|
### Your Section in MEMORY_BANK.md
|
|
- **Kerem:** Database Schema, DAO Layer
|
|
- **Milena:** Algorithm Design, Constraint Validation
|
|
- **Rabia:** User Interface Design, UI Components
|
|
- **Sefa:** API Contracts (Controller), MVC Architecture
|
|
- **Feyza:** Testing Strategy, Test Types
|
|
- **Emin:** All sections (for review)
|
|
|
|
---
|
|
|
|
## Git Workflow Reminder
|
|
|
|
### Creating a Feature Branch
|
|
|
|
```bash
|
|
# Always start from latest develop
|
|
git checkout develop
|
|
git pull origin develop
|
|
|
|
# Create your feature branch
|
|
git checkout -b feature/your-feature-name
|
|
|
|
# Make changes, then commit
|
|
git add .
|
|
git commit -m "feat(scope): brief description"
|
|
|
|
# Push to remote
|
|
git push -u origin feature/your-feature-name
|
|
```
|
|
|
|
### Commit Message Format
|
|
|
|
```
|
|
<type>(<scope>): <subject>
|
|
|
|
Examples:
|
|
feat(dao): Add StudentDAO with batch insert
|
|
fix(algorithm): Correct consecutive exam constraint
|
|
test(dao): Add unit tests for StudentDAO
|
|
docs(readme): Update installation instructions
|
|
```
|
|
|
|
### Creating a Pull Request
|
|
|
|
1. Push your feature branch to GitHub
|
|
2. Go to GitHub repository
|
|
3. Click "New Pull Request"
|
|
4. Base: `develop`, Compare: `feature/your-feature-name`
|
|
5. Fill in PR template
|
|
6. Request at least 1 reviewer
|
|
7. Wait for approval and CI to pass
|
|
8. Merge when approved
|
|
|
|
---
|
|
|
|
## Useful Commands
|
|
|
|
### Maven Commands
|
|
|
|
```bash
|
|
# Clean and build
|
|
mvn clean install
|
|
|
|
# Run tests
|
|
mvn test
|
|
|
|
# Run specific test
|
|
mvn test -Dtest=StudentDAOTest
|
|
|
|
# Generate test coverage report
|
|
mvn clean test jacoco:report
|
|
open target/site/jacoco/index.html
|
|
|
|
# Generate JavaDoc
|
|
mvn javadoc:javadoc
|
|
open target/site/apidocs/index.html
|
|
|
|
# Run application (when Main.java is ready)
|
|
mvn javafx:run
|
|
|
|
# Package into JAR
|
|
mvn package
|
|
```
|
|
|
|
### Git Commands
|
|
|
|
```bash
|
|
# Check status
|
|
git status
|
|
|
|
# View changes
|
|
git diff
|
|
|
|
# Stage files
|
|
git add file.java
|
|
git add .
|
|
|
|
# Commit
|
|
git commit -m "message"
|
|
|
|
# Push
|
|
git push origin feature-name
|
|
|
|
# Pull latest develop
|
|
git checkout develop
|
|
git pull origin develop
|
|
|
|
# Rebase your branch on develop
|
|
git checkout feature-name
|
|
git rebase develop
|
|
|
|
# View commit history
|
|
git log --oneline
|
|
|
|
# View branches
|
|
git branch -a
|
|
```
|
|
|
|
---
|
|
|
|
## Project Statistics
|
|
|
|
- **Team Size:** 6 members
|
|
- **Duration:** 10 weeks (Nov 26, 2025 - Feb 4, 2026)
|
|
- **Lines of Documentation:** ~15,000+ lines
|
|
- **Files Created:** 8 core documentation files
|
|
- **Technology Stack:** Java 17, JavaFX 21, SQLite, Maven
|
|
- **Target:** Fully functional desktop application with >70% test coverage
|
|
|
|
---
|
|
|
|
## Weekly Meeting Schedule
|
|
|
|
**Monday (30 min) - Sprint Planning:**
|
|
- Review last week's progress
|
|
- Assign this week's tasks
|
|
- Discuss blockers
|
|
|
|
**Wednesday (15-30 min) - Mid-Week Sync:**
|
|
- Quick status updates
|
|
- Identify issues early
|
|
- Schedule pair programming if needed
|
|
|
|
**Friday (30-45 min) - Demo & Retrospective:**
|
|
- Each person demos their work
|
|
- Celebrate wins
|
|
- Discuss improvements
|
|
- Brief planning for next week
|
|
|
|
---
|
|
|
|
## Communication Channels
|
|
|
|
**Synchronous:**
|
|
- Weekly meetings (Monday, Wednesday, Friday)
|
|
- Pair programming sessions (as needed)
|
|
|
|
**Asynchronous:**
|
|
- WhatsApp/Discord - Daily updates, quick questions
|
|
- GitHub - Code reviews, PR discussions
|
|
- Email - Formal communication with professor
|
|
|
|
---
|
|
|
|
## Success Metrics
|
|
|
|
### Week 1 (Current Week)
|
|
- **Expected Completion:** 10%
|
|
- **Key Milestone:** Project setup, infrastructure, initial designs
|
|
- **Deliverables:**
|
|
- Database schema script
|
|
- Algorithm design document
|
|
- UI wireframes
|
|
- CI/CD pipeline working
|
|
|
|
### By Week 3 (End of Phase 1)
|
|
- **Expected Completion:** 30%
|
|
- **Key Milestone:** Foundation complete
|
|
- **Deliverables:**
|
|
- Database layer working
|
|
- CSV import functional
|
|
- Configuration screen working
|
|
- All team members can run project locally
|
|
|
|
---
|
|
|
|
## Getting Help
|
|
|
|
### If You're Stuck
|
|
|
|
1. **Try for 2 hours** - Google, documentation, StackOverflow
|
|
2. **Ask in team chat** - Someone may have solved it
|
|
3. **Pair program** - Schedule session with teammate
|
|
4. **Ask Emin** - Integration Lead can help with architecture questions
|
|
5. **Ask Professor** - For requirements clarification
|
|
|
|
### Common Issues
|
|
|
|
**Maven dependency download fails:**
|
|
```bash
|
|
# Clear Maven cache and retry
|
|
rm -rf ~/.m2/repository
|
|
mvn clean install
|
|
```
|
|
|
|
**IDE doesn't recognize Java 17:**
|
|
- Verify JDK 17 is installed: `java -version`
|
|
- Configure project SDK in IDE settings
|
|
|
|
**Git merge conflicts:**
|
|
- See GIT_WORKFLOW.md section on "Merge Conflict Resolution"
|
|
- Ask Emin if you need help resolving
|
|
|
|
**Tests won't run:**
|
|
- Ensure Maven Surefire plugin is configured in pom.xml (already done)
|
|
- Check test file naming: must end with `Test.java`
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
### For the Team
|
|
|
|
1. **Today (Nov 26):**
|
|
- All members clone repository
|
|
- Set up development environment
|
|
- Read assigned sections of MEMORY_BANK.md
|
|
|
|
2. **This Week (Week 1):**
|
|
- Each member starts assigned tasks from ROADMAP.md
|
|
- Create first feature branches
|
|
- Make first commits
|
|
|
|
3. **Friday Meeting (Nov 30):**
|
|
- Each person demos progress
|
|
- Database schema presented
|
|
- UI wireframes presented
|
|
- Algorithm pseudocode presented
|
|
|
|
---
|
|
|
|
## Resources
|
|
|
|
### Learning Resources
|
|
|
|
**Java & JavaFX:**
|
|
- JavaFX Official Docs: https://openjfx.io/javadoc/17/
|
|
- JavaFX Tutorial: https://openjfx.io/openjfx-docs/
|
|
|
|
**SQLite:**
|
|
- SQLite Tutorial: https://www.sqlitetutorial.net/
|
|
- SQLite Java: https://www.sqlitetutorial.net/sqlite-java/
|
|
|
|
**CSP Algorithms:**
|
|
- Russell & Norvig AI Textbook: Chapter 6
|
|
- Online: https://artint.info/2e/html/ArtInt2e.Ch4.html
|
|
|
|
**Testing:**
|
|
- JUnit 5: https://junit.org/junit5/docs/current/user-guide/
|
|
- Mockito: https://site.mockito.org/
|
|
|
|
### Tools
|
|
|
|
**Required:**
|
|
- Java JDK 17: https://adoptium.net/
|
|
- Maven: https://maven.apache.org/download.cgi
|
|
- Git: https://git-scm.com/
|
|
|
|
**Recommended:**
|
|
- IntelliJ IDEA: https://www.jetbrains.com/idea/download/
|
|
- Scene Builder: https://gluonhq.com/products/scene-builder/
|
|
- DB Browser for SQLite: https://sqlitebrowser.org/
|
|
|
|
---
|
|
|
|
## Questions?
|
|
|
|
- Check MEMORY_BANK.md for detailed answers
|
|
- Ask in team chat
|
|
- Contact Emin (Documentation Lead) for documentation questions
|
|
- Contact team members for their specialty areas
|
|
- Email professor for requirements clarification
|
|
|
|
---
|
|
|
|
**Last Updated:** November 26, 2025
|
|
|
|
**Good luck team! Let's build an amazing exam scheduler! 🚀**
|
|
|
|
---
|
|
|
|
*For comprehensive documentation, see [MEMORY_BANK.md](MEMORY_BANK.md)*
|