diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..db5df92 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,22 @@ +name: Bug Report +description: Track a bug or error in code +labels: [type:bug, status:blocked] +body: + - type: input + id: bug + attributes: + label: Short Description + placeholder: e.g. Todo items not saving to localStorage + - type: textarea + id: steps + attributes: + label: Steps to Reproduce + placeholder: List what you did to cause the issue + - type: textarea + id: expected + attributes: + label: Expected Behaviour + - type: textarea + id: actual + attributes: + label: Actual Behaviour / Error Message diff --git a/.github/ISSUE_TEMPLATE/exercise.yml b/.github/ISSUE_TEMPLATE/exercise.yml new file mode 100644 index 0000000..e7bb684 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/exercise.yml @@ -0,0 +1,18 @@ +name: Exercise / Practice +description: Track a small coding task or practice drill +labels: [type:exercise, status:todo] +body: + - type: input + id: title + attributes: + label: Exercise Title + placeholder: e.g. Flexbox Practice Layout + - type: textarea + id: instructions + attributes: + label: Instructions / Challenge Description + - type: textarea + id: goals + attributes: + label: What You’re Practising + placeholder: e.g. Flexbox alignment and spacing diff --git a/.github/ISSUE_TEMPLATE/idea.yml b/.github/ISSUE_TEMPLATE/idea.yml new file mode 100644 index 0000000..a02c4bd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/idea.yml @@ -0,0 +1,14 @@ +name: Feature / Repo Idea +description: Brainstorm ideas for repo improvement +labels: [meta:ideas] +body: + - type: input + id: idea + attributes: + label: Idea Title + placeholder: e.g. Add GitHub Action to auto-close completed issues + - type: textarea + id: details + attributes: + label: Notes + placeholder: How it could work or benefit learning diff --git a/.github/ISSUE_TEMPLATE/improvement.yml b/.github/ISSUE_TEMPLATE/improvement.yml new file mode 100644 index 0000000..04cb610 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/improvement.yml @@ -0,0 +1,22 @@ +name: Improvement / Refactor +description: Suggest or log a planned improvement +labels: [type:improvement] +body: + - type: input + id: area + attributes: + label: What needs improving? + placeholder: e.g. Update README structure + - type: textarea + id: details + attributes: + label: Details + placeholder: Why or how it could be improved? + - type: dropdown + id: urgency + attributes: + label: Priority + options: + - Low + - Medium + - High diff --git a/.github/ISSUE_TEMPLATE/mini-project.yml b/.github/ISSUE_TEMPLATE/mini-project.yml new file mode 100644 index 0000000..fe940b3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/mini-project.yml @@ -0,0 +1,28 @@ +name: Mini Project +description: Plan and track a project +labels: [type:project, status:todo] +body: + - type: input + id: project-name + attributes: + label: Project Name + placeholder: e.g. Weather App + - type: textarea + id: goals + attributes: + label: Project Goals + placeholder: | + - Use Fetch API + - Show weather data + - type: textarea + id: tasks + attributes: + label: Task List + placeholder: | + - [ ] Setup HTML/CSS + - [ ] Fetch weather from OpenWeather API + - type: textarea + id: stack + attributes: + label: Tools/Tech Used + placeholder: e.g. HTML, JS, Fetch, Bootstrap diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 0000000..a571939 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1,18 @@ +name: Question / Confusion +description: Log a concept you're struggling with +labels: [type:question, status:blocked] +body: + - type: input + id: question + attributes: + label: What’s confusing? + placeholder: e.g. How does closure scope persist? + - type: textarea + id: context + attributes: + label: Describe the context or where you got stuck + - type: textarea + id: next-steps + attributes: + label: What will you do next? + placeholder: Try again? Ask someone? Look for examples? diff --git a/.github/ISSUE_TEMPLATE/reflection.yml b/.github/ISSUE_TEMPLATE/reflection.yml new file mode 100644 index 0000000..f5ad458 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/reflection.yml @@ -0,0 +1,21 @@ +name: Weekly Reflection +description: Summarise your learning and blockers for the week +labels: [type:reflection] +body: + - type: input + id: week + attributes: + label: Week + placeholder: Week 1, 2, etc. + - type: textarea + id: learned + attributes: + label: βœ… What did you learn this week? + - type: textarea + id: struggled + attributes: + label: 🧱 What did you struggle with? + - type: textarea + id: next + attributes: + label: πŸ”œ What’s next? diff --git a/.github/ISSUE_TEMPLATE/resource.yml b/.github/ISSUE_TEMPLATE/resource.yml new file mode 100644 index 0000000..be29364 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/resource.yml @@ -0,0 +1,14 @@ +name: Resource to Review +description: Track an article, video, or doc you want to review +labels: [type:resource, status:todo] +body: + - type: input + id: resource + attributes: + label: Link + placeholder: https://... + - type: textarea + id: notes + attributes: + label: Why save this? + placeholder: e.g. Looks like a good deep dive into React Router diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..c08c9ef --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,20 @@ +# πŸš€ Pull Request: [Title of Your Work] + +## βœ… Summary + +Brief explanation of what this PR does. + +## πŸ“‹ Checklist + +- [ ] Code compiles +- [ ] All todos marked +- [ ] README / Notes updated +- [ ] Related Issue: #[issue number] + +## πŸ“Ž Related Topics +`topic:js`, `type:project`, `level:intermediate` + +## πŸ“Έ Screenshots (if UI-related) + +_Add before/after screenshots here_ + diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000..fc41669 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,169 @@ +# =========================== +# πŸ”– Topic Labels +# =========================== + +topic:html: + - '*contains:html' + - '01-NOTES/HTML.md' + - '**/*.html' + +topic:css: + - '*contains:css' + - '01-NOTES/CSS.md' + - '**/*.css' + +topic:js: + - '*contains:javascript' + - '*contains:js' + - '**/*.js' + - '01-NOTES/JavaScript/**' + +topic:dom: + - '*contains:dom' + - '*contains:eventlistener' + - '*contains:document.querySelector' + +topic:fetch: + - '*contains:fetch' + - '*contains:api' + - '*contains:async' + - '**/fetch*/**' + +topic:terminal: + - '*contains:terminal' + - '*contains:cli' + - '*contains:shell' + - '**/*.sh' + +topic:node: + - '*contains:node.js' + - '*contains:express' + - '**/*.mjs' + - '01-NOTES/NodeJS/**' + +topic:db: + - '*contains:mongodb' + - '*contains:mongoose' + - '*contains:sql' + - '**/*.db' + - '**/*.sql' + +topic:react: + - '*contains:react' + - '**/*.jsx' + - '**/*.tsx' + - '01-NOTES/ReactJS/**' + +topic:ts: + - '*contains:typescript' + - '**/*.ts' + - '**/*.tsx' + +topic:networking: + - '*contains:http' + - '*contains:dns' + - '*contains:request' + +topic:cloud: + - '*contains:vercel' + - '*contains:deploy' + - '*contains:ci/cd' + +topic:security: + - '*contains:xss' + - '*contains:csrf' + - '*contains:auth' + - '*contains:jwt' + +topic:ssr: + - '*contains:ssr' + - '*contains:next.js' + - '**/ssr*/**' + +# =========================== +# πŸ“‹ Type Labels +# =========================== + +type:learning: + - '*contains:learn' + - '*contains:study' + - '*contains:understand' + +type:exercise: + - '*contains:exercise' + - '*contains:practice' + - '*contains:challenge' + +type:project: + - '*contains:project' + - '*contains:build' + - '03-PROJECTS/**' + +type:reflection: + - '*contains:reflection' + - '05-REFLECTIONS/**' + +type:resource: + - '*contains:resource' + - '*contains:article' + - '*contains:read' + +type:bug: + - '*contains:bug' + - '*contains:error' + - '*contains:crash' + - '*contains:stacktrace' + +type:question: + - '*contains:question' + - '*contains:why' + - '*contains:how do' + +type:improvement: + - '*contains:refactor' + - '*contains:improve' + - '*contains:cleanup' + +# =========================== +# 🎯 Level Labels +# =========================== + +level:beginner: + - '*contains:beginner' + - '*contains:easy' + +level:intermediate: + - '*contains:intermediate' + - '*contains:moderate' + +level:advanced: + - '*contains:advanced' + - '*contains:hard' + - '*contains:complex' + +# =========================== +# 🚦 Status Labels +# =========================== + +status:todo: + - '*contains:todo' + - '*contains:to do' + - '*contains:plan to' + +status:in-progress: + - '*contains:in progress' + - '*contains:working on' + +status:done: + - '*contains:done' + - '*contains:complete' + +status:blocked: + - '*contains:blocked' + - '*contains:stuck' + - '*contains:can’t continue' + +status:revisit: + - '*contains:revisit' + - '*contains:review later' + - '*contains:try again' diff --git a/.github/workflows/auto-label.yml b/.github/workflows/auto-label.yml new file mode 100644 index 0000000..006ba8f --- /dev/null +++ b/.github/workflows/auto-label.yml @@ -0,0 +1,16 @@ +# .github/workflows/auto-label.yml +name: Auto Label on Issues and PRs + +on: + issues: + types: [opened, edited] + pull_request: + types: [opened, edited] + +jobs: + label: + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml new file mode 100644 index 0000000..3cc707e --- /dev/null +++ b/.github/workflows/prettier.yml @@ -0,0 +1,21 @@ +# .github/workflows/prettier.yml +name: Prettify Code + +on: + push: + paths: + - '**.js' + - '**.ts' + - '**.json' + - '**.html' + - '**.css' + +jobs: + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Run Prettier + run: | + npm install + npx prettier --write . diff --git a/.github/workflows/weekly-digest.yml b/.github/workflows/weekly-digest.yml new file mode 100644 index 0000000..af80a76 --- /dev/null +++ b/.github/workflows/weekly-digest.yml @@ -0,0 +1,15 @@ +# .github/workflows/weekly-digest.yml +name: Weekly Progress Digest + +on: + schedule: + - cron: '0 10 * * MON' + +jobs: + digest: + runs-on: ubuntu-latest + steps: + - name: List in-progress issues + run: gh issue list --label "status:in-progress" --limit 100 + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/MILESTONES.md b/MILESTONES.md new file mode 100644 index 0000000..5fc50a8 --- /dev/null +++ b/MILESTONES.md @@ -0,0 +1,9 @@ +# 🎯 Milestone Progress Tracker + +| Milestone | Status | Completion | +|------------------------|---------------|------------| +| Frontend Foundations | βœ… Complete | 100% | +| JavaScript Deep Dive | πŸ”„ In Progress | 60% | +| Backend Basics | ⏳ Not Started | 0% | +| React Fundamentals | ⏳ Not Started | 0% | +| Deployment & Hosting | ⏳ Not Started | 0% |