Skip to content

Commit 3ac52f8

Browse files
committed
Clean up project structure and improve organization
- Move notes/ to reference-material/fasthtml-notes/ (gitignored) - Move test_files/ to tests/fixtures/ (proper test location) - Add .gitkeep files for runtime directories (data/, uploads/, exports/) - Update .gitignore to exclude reference materials and runtime files - Update Makefile to use 'uv pip' instead of 'pip' - Expand README project structure to document ALL directories - Add comprehensive CONTRIBUTING.md guide - Remove empty static/js directory (no JavaScript used) - Document which directories are auto-created vs included This makes the project structure clearer for contributors and ensures clean clones with proper directory structure.
1 parent b12fb9d commit 3ac52f8

File tree

12 files changed

+217
-3579
lines changed

12 files changed

+217
-3579
lines changed

.gitignore

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,17 @@ src-tauri/gen/
8888
dist/
8989
build/
9090

91-
# Reference implementations (read-only)
91+
# Reference materials (not for distribution)
9292
reference-implementations/
93+
reference-material/
9394

9495
# Old requirements files (we use pyproject.toml)
95-
requirements*.txt
96+
requirements*.txt
97+
98+
# Runtime directories
99+
uploads/*
100+
!uploads/.gitkeep
101+
exports/*
102+
!exports/.gitkeep
103+
data/*
104+
!data/.gitkeep

CONTRIBUTING.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# Contributing to Curriculum Curator
2+
3+
Thank you for your interest in contributing to Curriculum Curator! This document provides guidelines for contributing to the project.
4+
5+
## Getting Started
6+
7+
1. **Fork the repository** on GitHub
8+
2. **Clone your fork** locally:
9+
```bash
10+
git clone https://github.com/YOUR-USERNAME/curriculum-curator.git
11+
cd curriculum-curator
12+
```
13+
3. **Set up development environment**:
14+
```bash
15+
python -m venv .venv
16+
source .venv/bin/activate # Windows: .venv\Scripts\activate
17+
uv pip install -e ".[dev]"
18+
```
19+
4. **Configure environment**:
20+
```bash
21+
cp .env.example .env
22+
# Edit .env with your settings
23+
```
24+
25+
## Development Workflow
26+
27+
1. **Create a feature branch**:
28+
```bash
29+
git checkout -b feature/your-feature-name
30+
```
31+
32+
2. **Make your changes** following our coding standards
33+
34+
3. **Run tests and checks**:
35+
```bash
36+
make check-all # Runs lint, type-check, and tests
37+
```
38+
39+
4. **Commit your changes**:
40+
```bash
41+
git add .
42+
git commit -m "feat: add amazing feature"
43+
```
44+
45+
5. **Push to your fork**:
46+
```bash
47+
git push origin feature/your-feature-name
48+
```
49+
50+
6. **Create a Pull Request** on GitHub
51+
52+
## Coding Standards
53+
54+
### Python Style
55+
- Follow PEP 8
56+
- Use type hints where possible
57+
- Maximum line length: 100 characters
58+
- Use `ruff` for linting and formatting
59+
60+
### Commit Messages
61+
Follow conventional commits format:
62+
- `feat:` New features
63+
- `fix:` Bug fixes
64+
- `docs:` Documentation changes
65+
- `test:` Test additions or changes
66+
- `refactor:` Code refactoring
67+
- `chore:` Maintenance tasks
68+
69+
### Testing
70+
- Write tests for new features
71+
- Maintain or improve code coverage
72+
- Tests go in the `tests/` directory
73+
- Use pytest for testing
74+
75+
## Project Structure
76+
77+
See the [README.md](README.md#project-structure) for detailed project structure.
78+
79+
Key directories:
80+
- `core/` - Core business logic
81+
- `plugins/` - Plugin system
82+
- `views/` - UI components
83+
- `tests/` - Test suite
84+
- `docs/` - Documentation
85+
86+
## Development Tools
87+
88+
### Using Make
89+
```bash
90+
make dev # Run development server
91+
make test # Run tests
92+
make lint # Run linter
93+
make type-check # Check types
94+
make check-all # Run all checks
95+
```
96+
97+
### Using Scripts Directly
98+
```bash
99+
python scripts/run_dev.py # Development server
100+
python scripts/run_tests.py # Run tests
101+
python scripts/check_types.py # Type checking
102+
```
103+
104+
## Areas for Contribution
105+
106+
### Current Priorities
107+
1. **LLM Integration** - Build content generation pipeline
108+
2. **Plugin Development** - Create new validators and remediators
109+
3. **Documentation** - Improve guides and examples
110+
4. **Testing** - Increase test coverage
111+
5. **UI/UX** - Enhance user interfaces
112+
113+
### Good First Issues
114+
Look for issues labeled `good first issue` on GitHub.
115+
116+
## Pull Request Process
117+
118+
1. **Update documentation** if needed
119+
2. **Add tests** for new functionality
120+
3. **Ensure all tests pass**
121+
4. **Update CHANGELOG.md** if applicable
122+
5. **Request review** from maintainers
123+
124+
## Questions?
125+
126+
- Check existing [issues](https://github.com/michael-borck/curriculum-curator/issues)
127+
- Read the [documentation](docs/)
128+
- Ask in discussions or create an issue
129+
130+
## License
131+
132+
By contributing, you agree that your contributions will be licensed under the project's MIT license.

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ help:
1717

1818
# Install dependencies
1919
install:
20-
pip install -e .
20+
uv pip install -e .
2121

2222
install-dev:
23-
pip install -e ".[dev]"
23+
uv pip install -e ".[dev]"
2424

2525
# Testing
2626
test:

README.md

Lines changed: 72 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -122,34 +122,87 @@ curriculum-curator/
122122
├── app.py # Main FastHTML application
123123
├── init_db.py # Database initialization script
124124
├── pyproject.toml # Python project configuration
125-
├── .env.example # Environment configuration template
125+
├── .env.example # Environment configuration template ⭐
126+
├── Makefile # Development shortcuts (uses uv)
127+
126128
├── core/ # Core business logic
127-
│ ├── auth.py # Authentication system
128-
│ ├── email_service.py # Email integration
129-
│ ├── security.py # Security utilities
130-
│ ├── course_manager.py # Course management
129+
│ ├── auth.py # Authentication & user management
130+
│ ├── email_service.py # Email integration (Brevo)
131+
│ ├── security.py # Security utilities & rate limiting
132+
│ ├── course_manager.py # Course content management
131133
│ └── teaching_philosophy.py # Teaching style system
132-
├── scripts/ # Development & utility scripts
133-
│ ├── run_dev.py # Development server with auto-reload
134-
│ ├── run_tests.py # Test runner
135-
│ ├── check_types.py # Type checking
136-
│ └── test_plugins.py # Plugin system testing
137-
├── plugins/ # Plugin system
138-
│ ├── base.py # Base plugin classes
139-
│ ├── validators/ # Content validators
140-
│ └── remediators/ # Content improvers
141-
├── views/ # UI components
142-
│ ├── landing.py # Landing page
134+
135+
├── components/ # UI components and helpers
136+
│ ├── layout.py # Page layout components
137+
│ ├── upload.py # File upload handling
138+
│ ├── analysis.py # Content analysis display
139+
│ ├── enhancement.py # Enhancement suggestions UI
140+
│ └── comparison.py # Before/after comparison
141+
142+
├── views/ # Page views
143+
│ ├── landing.py # Landing/home page
143144
│ ├── wizard_mode.py # Step-by-step interface
144145
│ └── expert_mode.py # Power user interface
145-
├── tests/ # Test suite
146-
├── docs/ # Comprehensive documentation
146+
147+
├── plugins/ # Extensible plugin system
148+
│ ├── base.py # Base plugin classes & registry
149+
│ ├── validators/ # Content validation plugins
150+
│ │ ├── readability.py
151+
│ │ ├── structure.py
152+
│ │ └── similarity.py
153+
│ └── remediators/ # Content improvement plugins
154+
│ ├── simplifier.py
155+
│ └── grammar_fixer.py
156+
157+
├── scripts/ # Development & utility scripts
158+
│ ├── run_dev.py # Dev server with auto-reload
159+
│ ├── run_tests.py # Test runner with coverage
160+
│ ├── check_types.py # Type checking (basedpyright)
161+
│ └── test_plugins.py # Plugin system testing
162+
163+
├── tests/ # Comprehensive test suite
164+
│ ├── conftest.py # Test configuration
165+
│ ├── test_auth_system.py
166+
│ ├── test_plugin_system.py
167+
│ └── test_teaching_philosophy.py
168+
169+
├── docs/ # Documentation
147170
│ ├── adr/ # Architecture Decision Records
148171
│ ├── guides/ # User and deployment guides
172+
│ ├── api/ # API documentation
173+
│ ├── concepts/ # Conceptual documentation
149174
│ └── SECURITY.md # Security overview
150-
└── data/ # Local data storage (gitignored)
175+
176+
├── typings/ # Type stubs for FastHTML
177+
│ └── fasthtml/ # Custom type definitions
178+
179+
├── static/ # Static assets (mostly unused)
180+
│ ├── css/ # Stylesheets (if any)
181+
│ └── js/ # JavaScript (removed)
182+
183+
├── data/ # SQLite database (auto-created)
184+
├── uploads/ # User uploaded files (auto-created)
185+
├── exports/ # Generated exports (auto-created)
186+
187+
└── reference-material/ # Development references (gitignored)
188+
├── fasthtml-notes/ # FastHTML examples & notes
189+
└── tauri-version/ # Original implementation
151190
```
152191

192+
### Auto-Created Directories
193+
The following directories are created automatically when needed:
194+
- `data/` - SQLite database and related files
195+
- `uploads/` - Temporary storage for uploaded files
196+
- `exports/` - Generated course materials
197+
- `__pycache__/` - Python bytecode cache
198+
- `.ruff_cache/` - Linter cache
199+
200+
### Not Included in Repository
201+
- `.venv/` - Python virtual environment
202+
- `reference-material/` - Development notes and references
203+
- `reference-implementations/` - Previous versions
204+
- Any `.env` files (use `.env.example` as template)
205+
153206
## Contributing
154207

155208
We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

data/.gitkeep

Whitespace-only changes.

exports/.gitkeep

Whitespace-only changes.

0 commit comments

Comments
 (0)