🔄 Workflow Diagram
🔄 Workflow Diagram
Student Submission Flow
graph TB
A[Student Deploys Website] --> B[Forks Repository]
B --> C[Creates Domain Config JSON]
C --> D[Runs Validation Script]
D --> E{Valid?}
E -->|No| F[Fix Errors]
F --> D
E -->|Yes| G[Submits Pull Request]
G --> H[GitHub Actions Auto-Validation]
H --> I{Passes?}
I -->|No| J[PR Shows Error]
J --> K[Student Fixes]
K --> G
I -->|Yes| L[Manual Review by Maintainer]
L --> M{Approved?}
M -->|No| N[Request Changes]
N --> O[Student Updates PR]
O --> L
M -->|Yes| P[Add DNS Record Manually]
P --> Q[Merge PR]
Q --> R[Student Configures Custom Domain]
R --> S[Wait for DNS Propagation]
S --> T[Domain Goes Live!]
Maintainer Review Process
graph LR
A[New PR Received] --> B[Check PR Template]
B --> C[Run Validation]
C --> D[Visit Deployment URL]
D --> E[Review Content]
E --> F{Appropriate?}
F -->|No| G[Reject with Explanation]
F -->|Yes| H[Check Subdomain Availability]
H --> I{Available?}
I -->|No| J[Request Different Name]
I -->|Yes| K[Add DNS Record]
K --> L[Comment Approval on PR]
L --> M[Merge PR]
M --> N[Notify Student]
DNS Configuration Flow
graph TB
A[Receive Approved PR] --> B[Extract Subdomain Info]
B --> C[Login to DNS Provider]
C --> D[Create CNAME Record]
D --> E[Subdomain: name]
D --> F[Target: deployment-url]
D --> G[TTL: Auto]
D --> H[Proxy: Enabled]
H --> I[Verify Record Created]
I --> J[Test DNS Resolution]
J --> K{Working?}
K -->|No| L[Troubleshoot]
L --> J
K -->|Yes| M[Update PR Comment]
M --> N[Merge PR]
Complete System Architecture
graph TB
subgraph Students
A1[Student 1]
A2[Student 2]
A3[Student N]
end
subgraph GitHub Repository
B1[Domain Configs in /domains]
B2[PR Template]
B3[Validation Script]
B4[Documentation]
end
subgraph GitHub Actions
C1[Auto-Validate PRs]
C2[Check Duplicates]
C3[Format Checking]
end
subgraph Maintainer
D1[Review PRs]
D2[Manual DNS Config]
D3[Merge Approved PRs]
end
subgraph DNS Provider
E1[CNAME Records]
E2[subdomain.iths.online]
end
subgraph Deployment Platforms
F1[Vercel]
F2[Netlify]
F3[GitHub Pages]
F4[Cloudflare]
F5[Others]
end
A1 --> B1
A2 --> B1
A3 --> B1
B1 --> C1
B1 --> C2
B1 --> C3
C1 --> D1
C2 --> D1
C3 --> D1
D1 --> D2
D2 --> E1
E1 --> E2
D1 --> D3
E2 --> F1
E2 --> F2
E2 --> F3
E2 --> F4
E2 --> F5
File Structure Flow
Repository Root
│
├── .github/
│ ├── CODEOWNERS → Defines who must review PRs
│ ├── ISSUE_TEMPLATE/ → Templates for support
│ ├── PULL_REQUEST_TEMPLATE/ → PR submission form
│ └── workflows/ → Automated validation
│
├── docs/ → Platform-specific guides
│ ├── getting-started.md → Main tutorial
│ ├── vercel.md → Vercel deployment
│ ├── netlify.md → Netlify deployment
│ ├── github-pages.md → GitHub Pages setup
│ ├── cloudflare-pages.md → Cloudflare setup
│ ├── render.md → Render deployment
│ └── other-platforms.md → Other platforms
│
├── domains/ → All domain configurations
│ ├── README.md → Directory guide
│ ├── examples/ → Sample configs
│ └── student-name.json → Actual submissions
│
├── scripts/
│ └── validate.py → Validation tool
│
├── CONTRIBUTING.md → How to contribute
├── LICENSE → MIT License
├── MAINTAINER_GUIDE.md → DNS config guide
├── QUICKSTART.md → Quick reference
├── README.md → Main documentation
└── PROJECT_SUMMARY.md → Setup complete guide
Timeline
Day 0: Student deploys website
↓
Day 1: Student submits PR
↓
Day 1-2: Automated validation runs
↓
Day 1-2: Manual review (24-48 hours)
↓
Day 2: DNS record added
↓
Day 2-3: DNS propagation (up to 48 hours)
↓
Day 3+: Domain is live and working!
Key Interactions
Student ↔ Repository
- Fork repo
- Create domain config
- Submit PR
- Respond to review comments
Repository ↔ GitHub Actions
- Trigger validation on PR
- Check format and duplicates
- Report results
Maintainer ↔ Repository
- Review PRs
- Validate content
- Add DNS records
- Merge approved PRs
DNS Provider ↔ Deployment Platform
- CNAME points to deployment URL
- SSL/TLS handled by platform
- Traffic routed through DNS
This system ensures: ✅ Quality control through validation ✅ Manual review for safety ✅ Clear documentation for users ✅ Automated checks where possible ✅ Scalable process for growth