Skip to content

Commit bb08c81

Browse files
committed
Merge branch 'develop'
2 parents 18c968c + 345c337 commit bb08c81

20 files changed

+774
-227
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,3 +190,6 @@ _build/
190190

191191
# Log files
192192
.logs
193+
194+
# _version.py
195+
src/_version.py

.pre-commit-config.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ repos:
1515
#########################################
1616
- repo: https://github.com/pre-commit/pre-commit-hooks
1717
# Standard collection of pre-commit hooks for various checks
18-
rev: v5.0.0
18+
rev: v6.0.0
1919
hooks:
2020
- id: trailing-whitespace
2121
name: "✂️ whitespace · Remove trailing whitespace"
@@ -84,7 +84,7 @@ repos:
8484
#########################################
8585
- repo: https://github.com/astral-sh/ruff-pre-commit
8686
# Ruff is a fast Python linter and formatter written in Rust
87-
rev: v0.11.2
87+
rev: v0.12.11
8888
hooks:
8989
- id: ruff
9090
name: "🐍 python · Format with Ruff"
@@ -99,7 +99,7 @@ repos:
9999
#########################################
100100
- repo: https://github.com/asottile/pyupgrade
101101
# Automatically upgrades Python syntax to newer versions
102-
rev: v3.19.1
102+
rev: v3.20.0
103103
hooks:
104104
- id: pyupgrade
105105
name: "🔄 python · Upgrade Python syntax"
@@ -108,7 +108,7 @@ repos:
108108

109109
- repo: https://github.com/asottile/add-trailing-comma
110110
# Adds trailing commas to function calls and definitions
111-
rev: v3.1.0
111+
rev: v3.2.0
112112
hooks:
113113
- id: add-trailing-comma
114114
name: "🔤 python · Add trailing commas"
@@ -118,7 +118,7 @@ repos:
118118
# API Documentation Validation
119119
#########################################
120120
- repo: https://github.com/python-openapi/openapi-spec-validator
121-
rev: 0.7.1
121+
rev: 0.8.0b1
122122
hooks:
123123
- id: openapi-spec-validator
124124
name: "📝 api · Validate OpenAPI Spec"
@@ -180,7 +180,7 @@ repos:
180180

181181
#########################################
182182
- repo: https://github.com/DavidAnson/markdownlint-cli2
183-
rev: v0.17.2
183+
rev: v0.18.1
184184
hooks:
185185
- id: markdownlint-cli2
186186
name: "📝 markdown · Lint markdown with markdownlint"
@@ -192,7 +192,7 @@ repos:
192192
# YAML File Validation
193193
#########################################
194194
- repo: https://github.com/adrienverge/yamllint.git
195-
rev: v1.37.0
195+
rev: v1.37.1
196196
hooks:
197197
- id: yamllint
198198
name: "📋 yaml · Lint YAML files with yamllint"
@@ -233,7 +233,7 @@ repos:
233233
# Scanning Hardcoded Secrets
234234
#########################################
235235
- repo: https://github.com/gitleaks/gitleaks
236-
rev: v8.24.2
236+
rev: v8.28.0
237237
hooks:
238238
- id: gitleaks
239239
name: "🔒 security · Scan for hardcoded secrets"

Makefile

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
diff branch-from \
77
set-upstream-feature-branches
88

9+
ifneq ( ,$ (wildcard ./.env))
10+
include .env
11+
export
12+
endif
13+
914
# Docker Compose Makefile commands
1015
COMPOSE_FILE = docker-compose.yml
1116
# Build containers without using cache
@@ -49,13 +54,13 @@ uv_sync:
4954
uv pip install -r requirements.txt
5055
# UV dependency management commands
5156
uv_sync_dev:
52-
uv sync --extra dev
57+
uv sync --group dev
5358
uv_sync_docs:
54-
uv sync --extra docs
59+
uv sync --group docs
5560
uv_sync_test:
56-
uv sync --extra test
61+
uv sync --group test
5762
uv_sync_lint:
58-
uv sync --extra lint
63+
uv sync --group lint
5964
uv_sync_all:
6065
uv sync --python 3.12.10 --upgrade --all-groups --all-extras --reinstall --no-cache --resolution=highest
6166
uv_mkdocs_build:

README.md

Lines changed: 89 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,68 @@
1-
# MkDocForge
1+
<p align="center">
2+
<h1 align="center"> Sharif OCW Scrapy's Downloader </h1>
3+
<p align="center">
4+
5+
<a href="https://img.shields.io">
6+
<img src="https://img.shields.io/badge/Project%20Status-Active-green.svg" alt="Project Status: Active">
7+
</a>
8+
9+
<a href="https://www.python.org/downloads/">
10+
<img src="https://img.shields.io/badge/Python-3.11+-blue.svg" alt="Python Version">
11+
</a>
12+
13+
<a href="https://scrapy.org">
14+
<img src="https://img.shields.io/badge/Scrapy-2.11+-green.svg" alt="Scrapy Version">
15+
</a>
216

17+
<a href="https://pydantic.dev">
18+
<img src="https://img.shields.io/badge/Pydantic-2.6+-blue.svg" alt="Pydantic Version">
19+
</a>
20+
21+
<a href="https://www.mkdocs.org">
22+
<img src="https://img.shields.io/badge/docs-mkdocs-blue.svg" alt="Documentation">
23+
</a>
24+
25+
<a href="LICENSE">
26+
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License">
27+
</a>
28+
29+
</p>
30+
<p align="center"><em> One-week MVP sprint board for OCW Sharif Scrapy's Downloader.</em>
31+
</p>
332
<p align="center">
4-
<a href="https://img.shields.io"><img src="https://img.shields.io/badge/Project%20Status-Active-green.svg" alt="Project Status: Active"></a>
5-
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/Python-3.11+-blue.svg" alt="Python Version"></a>
6-
<a href="https://www.mkdocs.org"><img src="https://img.shields.io/badge/docs-mkdocs-blue.svg" alt="Documentation"></a>
7-
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License"></a>
33+
<a href="#getting-started" class="md-button md-button--primary">Getting Started</a>
34+
<a href="https://github.com/Mdevpro78/sharif-ocw-scrapy-downloader" class="md-button">View on GitHub</a>
35+
</p>
836
</p>
9-
10-
<p align="center"><em>A comprehensive documentation platform powered by MkDocs with advanced features for technical documentation.</em></p>
1137

1238
## 📚 Overview
1339

14-
MkDocForge is a powerful documentation platform built on top of MkDocs that provides enhanced features for creating beautiful, functional, and comprehensive technical documentation. It combines the simplicity of Markdown with advanced capabilities like versioned documentation, code documentation via Doxygen integration, diagrams, and a rich set of plugins to create professional documentation sites.
40+
**Project Goal:** Deliver an MVP Scrapy-based downloader for Sharif OCW that:
41+
42+
- Fetches course metadata and sessions
43+
- Downloads all downloadable files
44+
- Organizes outputs into structured folders
45+
- Provides progress tracking and basic error handling
1546

16-
## 🎯 Purpose
47+
**Success Criteria:**
1748

18-
MkDocForge addresses common documentation challenges by providing:
49+
- Able to download at least one complete course (videos + PDFs)
50+
- Correct directory structure with sanitized filenames
51+
- Basic duplicate detection + retry handling works
52+
- GitHub issues, milestones, and PRs follow roadmap
1953

20-
- **Unified Documentation**: Combine API references, user guides, architecture decisions, and more in one platform
21-
- **Versioned Documentation**: Track and maintain documentation across different software versions
22-
- **Code Integration**: Automatically generate API documentation from source code comments
23-
- **Rich Media Support**: Easily embed diagrams, images, and interactive elements
24-
- **Collaborative Workflow**: Git-based workflow for documentation-as-code practices
54+
**Team Size:** 1 developer (solo)
2555

26-
## ✨ Key Features
56+
**Roles & Responsibilities:**
2757

28-
- 🎨 **Material Design Theme**: Beautiful, responsive documentation with light/dark mode
29-
- 📊 **Diagram Support**: PlantUML integration for architectural and flow diagrams
30-
- 🔄 **Versioned Documentation**: Maintain docs for multiple software versions with Mike
31-
- 📝 **Markdown Extensions**: Enhanced markdown with admonitions, tabs, code annotations
32-
- 🧩 **Plugin Ecosystem**: Extensive collection of plugins for advanced functionality
33-
- 🐳 **Docker Support**: Containerized environment for consistent documentation builds
34-
- 🔍 **Full-Text Search**: Powerful search capabilities across documentation
35-
- 💻 **Code Documentation**: Doxygen integration for automatic code documentation
58+
- Developer: Implement, test, document, manage repo, and review
59+
60+
**Definition of Done (DoD):**
61+
62+
- Code compiles and runs without errors
63+
- Passes basic integration tests on one sample course
64+
- Artifacts stored in correct directory structure
65+
- Pull requests merged into `main` with review checklist passed
3666

3767
## 🚀 Getting Started
3868

@@ -45,8 +75,8 @@ MkDocForge addresses common documentation challenges by providing:
4575

4676
```bash
4777
# Clone the repository
48-
git clone https://github.com/Mdevpro78/mkdocforge
49-
cd mkdocforge
78+
git clone https://github.com/Mdevpro78/sharif-ocw-scrapy-downloader/
79+
cd sharif-ocw-scrapy-downloader
5080

5181
# Install dependencies using UV (recommended)
5282
make uv_sync_docs
@@ -97,22 +127,39 @@ Once running, access the documentation at [http://localhost:8000](http://localho
97127

98128
## 📁 Project Structure
99129

100-
```
101-
.
102-
├── docs/ # Documentation source files
103-
│ ├── architecture/ # Architecture decision records
104-
│ ├── blog/ # Blog posts
105-
│ ├── examples/ # Example configurations and code
106-
│ ├── git/ # Git workflow documentation
107-
│ ├── glossary/ # Project terminology
108-
│ ├── python/ # Python development guides
109-
│ └── ... # Other documentation sections
110-
├── .github/ # GitHub workflows and CI/CD
111-
├── scripts/ # Utility scripts
112-
├── Dockerfile # Docker configuration
113-
├── mkdocs.yml # MkDocs configuration
114-
└── pyproject.toml # Python project configuration
115-
```
130+
### Directories
131+
132+
| Path | Purpose |
133+
| -------- | ------------------------------------------- |
134+
| docs/ | 📚 Docs: guidelines, roadmap, static assets |
135+
| src/ | 🧩 Source (Scrapy project + package) |
136+
| .github/ | ⚙️ CI/CD workflows |
137+
| scripts/ | 🧰 Utility scripts |
138+
139+
### Code layout (src)
140+
141+
| Path | Role |
142+
| ---------------------------------------- | ------------------------------ |
143+
| src/scrapy.cfg | Scrapy config |
144+
| src/sharif_ocw_downloader/config.py | Configuration management |
145+
| src/sharif_ocw_downloader/items.py | Item definitions (data models) |
146+
| src/sharif_ocw_downloader/middlewares.py | Middleware components |
147+
| src/sharif_ocw_downloader/pipelines.py | Item pipelines (process/store) |
148+
| src/sharif_ocw_downloader/settings.py | Scrapy settings |
149+
| src/sharif_ocw_downloader/spiders/ | Spider implementations |
150+
151+
### Key files & configs
152+
153+
| File | Purpose |
154+
| --------------------- | ------------------------------ |
155+
| Dockerfile | 🐳 Build Docker image |
156+
| docker-compose.yml | Orchestrate services |
157+
| Makefile | Common automation tasks |
158+
| mkdocs.yml | MkDocs site config |
159+
| pyproject.toml | Python project metadata/config |
160+
| cliff.toml | git-cliff (changelog) config |
161+
| requirements.lock | Locked production deps |
162+
| requirements-dev.lock | Locked development deps |
116163

117164
## 🔧 Configuration
118165

docs/CODE_OF_CONDUCT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Code of Conduct
44

5-
> Our standards for participation in the DocForge community
5+
> Our standards for participation in the **Sharif OCW Scrapy's Downloader** community
66
77
## Our Pledge
88

docs/contributing.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# Contributing to DocForge
1+
# Contributing to Sharif OCW Scrapy's Downloader
22

33
> Guidelines for contributing to this project
44
55
## 🚀 Getting Started
66

7-
Thank you for considering contributing to DocForge! This document outlines the process for contributing to the project and addresses common questions.
7+
Thank you for considering contributing to **Sharif OCW Scrapy's Downloader**! This document outlines the process for contributing to the project and addresses common questions.
88

99
## 📝 Code of Conduct
1010

@@ -22,7 +22,13 @@ This project adheres to a Code of Conduct that all participants are expected to
2222
make setup_dev
2323
```
2424

25-
3. **Create a branch** for your changes:
25+
or
26+
27+
```bash
28+
make uv_sync_all
29+
```
30+
31+
1. **Create a branch** for your changes:
2632

2733
```bash
2834
git checkout -b feature/your-feature-name

0 commit comments

Comments
 (0)