{"id":48496893,"url":"https://github.com/can4hou6joeng4/interview-prep","last_synced_at":"2026-04-20T11:08:57.045Z","repository":{"id":348838666,"uuid":"1200055644","full_name":"can4hou6joeng4/interview-prep","owner":"can4hou6joeng4","description":"Interactive Go backend interview prep site with flashcards, search, and local progress tracking","archived":false,"fork":false,"pushed_at":"2026-04-15T10:29:53.000Z","size":392,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T11:29:51.556Z","etag":null,"topics":["backend","flashcards","github-pages","go","golang","interview-prep","interview-questions","study-notes","system-design"],"latest_commit_sha":null,"homepage":"https://can4hou6joeng4.github.io/interview-prep/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/can4hou6joeng4.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-03T01:49:18.000Z","updated_at":"2026-04-15T10:28:58.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/can4hou6joeng4/interview-prep","commit_stats":null,"previous_names":["can4hou6joeng4/interview-prep"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/can4hou6joeng4/interview-prep","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/can4hou6joeng4%2Finterview-prep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/can4hou6joeng4%2Finterview-prep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/can4hou6joeng4%2Finterview-prep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/can4hou6joeng4%2Finterview-prep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/can4hou6joeng4","download_url":"https://codeload.github.com/can4hou6joeng4/interview-prep/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/can4hou6joeng4%2Finterview-prep/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32044346,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T10:33:29.490Z","status":"ssl_error","status_checked_at":"2026-04-20T10:32:30.107Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","flashcards","github-pages","go","golang","interview-prep","interview-questions","study-notes","system-design"],"created_at":"2026-04-07T12:31:42.119Z","updated_at":"2026-04-20T11:08:57.040Z","avatar_url":"https://github.com/can4hou6joeng4.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go Backend Interview Prep\n\n[![Validate](https://img.shields.io/github/actions/workflow/status/can4hou6joeng4/interview-prep/validate.yml?branch=main\u0026label=validate\u0026style=flat-square)](https://github.com/can4hou6joeng4/interview-prep/actions/workflows/validate.yml)\n[![Pages](https://img.shields.io/github/deployments/can4hou6joeng4/interview-prep/github-pages?label=github%20pages\u0026style=flat-square)](https://can4hou6joeng4.github.io/interview-prep/)\n[![License](https://img.shields.io/github/license/can4hou6joeng4/interview-prep?style=flat-square)](./LICENSE)\n[![Stars](https://img.shields.io/github/stars/can4hou6joeng4/interview-prep?style=flat-square)](https://github.com/can4hou6joeng4/interview-prep/stargazers)\n\nOpen-source interview prep toolkit for Go backend roles, combining a GitHub Pages flashcard site with a native iOS study app focused on review loops, lightweight note-taking, and structured recall.\n\n[中文说明](./README_zh.md)\n[Changelog](./CHANGELOG.md)\n\n## Highlights\n\n- 19 categories and 203 questions across Go, MySQL, Redis, Kafka, Kubernetes, system design, AI engineering, and project deep dives\n- Native iOS app built with SwiftUI, featuring a study dashboard, review queue, theme switching, lightweight note capture, and progress sync\n- Native iOS app now supports multiple accent palettes alongside system/light/dark appearance switching\n- Native iOS app home now highlights streak days, weekly review volume, and monthly topic coverage\n- Review completion screen reports mastery rate and routes users back to the topic that needs more work\n- Dedicated XCTest target and a GitHub Actions workflow keep core study statistics covered on every iOS change\n- Three learning modes: flashcards, searchable list view, and mock interview drills with score write-back\n- Curated learning paths now group the bank into commerce, platform, realtime, project deep-dive, and sprint tracks\n- Dedicated weak-review entry now lets you jump into wrong-answer, fuzzy, weak, and mastered-only review within the current learning path\n- Tag-based filtering now supports quick review of project-heavy and scenario-heavy questions\n- Mock summary now shows weak-category breakdowns and next-round recommendations\n- Combined filters for category, difficulty, search, unknown items, and random order\n- Stable question IDs with browser-side progress persistence and legacy progress migration\n- Zero-build static architecture, designed for GitHub Pages deployment\n- Every question and category now has a dedicated static page (`q/*.html`, `c/*.html`) for long-tail search indexing\n- Repository-level validation keeps README stats, SEO metadata, and required site assets in sync\n\n## Product Surfaces\n\n### GitHub Pages\n\n- Home dashboard with learning-path shortcuts and static SEO-friendly question/category pages\n- Flashcards, searchable list mode, and mock interview drills for browser-based practice\n\n### iOS App\n\n- Native study dashboard with “what to study next” actions\n- Streak tracking with daily / weekly / monthly study metrics on the home board\n- Dedicated review queue for weak/favorited items, plus a completion screen with mastery rate and topic-level recommendations\n- Category bank with status filters (unstarted / learning / mastered / favorited) and per-category mastery progress\n- Search results come with quick actions to favorite, mark-as-learning, and jump into the owning topic\n- Question detail now ships a one-tap toggle to add the current question into the today review queue\n- My-tab note module supports keyword search across note body, question title, and category\n- My-tab library card surfaces longest streak, total active days, and total mastered question count\n- Settings page exposes JSON export and one-tap reset for the local learning state\n- Adaptive light/dark/system theme support\n- Accent palette presets for different reading moods and visual preferences\n- In-app note capture and recent-note surfacing for knowledge accumulation\n\n![iOS dashboard](./assets/ios-dashboard.jpg)\n\n![iOS review queue](./assets/ios-review-session.jpg)\n\n## Live Demo\n\n- Repository: [github.com/can4hou6joeng4/interview-prep](https://github.com/can4hou6joeng4/interview-prep)\n- Site: [can4hou6joeng4.github.io/interview-prep](https://can4hou6joeng4.github.io/interview-prep/)\n\n## Local Preview\n\n```bash\npython3 -m http.server 4173\n```\n\nThen open [http://127.0.0.1:4173](http://127.0.0.1:4173).\n\n## Repository Structure\n\n```text\n.\n├── q/                         # 203 static question pages (generated)\n├── c/                         # 19 static category pages (generated)\n├── assets/\n│   ├── app.js\n│   ├── data.js\n│   ├── favicon.svg\n│   ├── ios-dashboard.jpg\n│   ├── ios-review-session.jpg\n│   └── styles.css\n├── ios/\n│   ├── InterviewPrep.xcodeproj\n│   ├── InterviewPrep/\n│   └── README.md\n├── scripts/\n│   ├── build-pages.mjs\n│   ├── check-fast.sh\n│   ├── check-full.sh\n│   ├── slug.mjs\n│   ├── validate-data.mjs\n│   ├── validate-pages.mjs\n│   └── validate-site.mjs\n├── .github/\n│   ├── ISSUE_TEMPLATE/\n│   ├── workflows/\n│   ├── dependabot.yml\n│   └── PULL_REQUEST_TEMPLATE.md\n├── index.html\n├── study.html\n├── mock.html\n├── 404.html\n├── CONTRIBUTING.md\n├── CODE_OF_CONDUCT.md\n├── CHANGELOG.md\n├── LICENSE\n├── README.md\n├── README_zh.md\n├── robots.txt\n├── sitemap.xml\n├── site.webmanifest\n└── SECURITY.md\n```\n\n## Development Notes\n\n- Runtime question data lives in `assets/data.js`\n- Interaction logic lives in `assets/app.js`\n- Source notes and expansion backlog live under `content-sources/`\n- GitHub Pages only deploys the site artifact, not the full repo contents\n- The static site includes a custom `404.html`, `robots.txt`, `site.webmanifest`, and `sitemap.xml` for a more complete deployment surface\n\n## Validation\n\n```bash\n./scripts/check-fast.sh\n./scripts/check-full.sh\n```\n\n## Static Page Build\n\nEvery time `assets/data.js` changes, regenerate the static question/category pages and sitemap:\n\n```bash\nnode scripts/build-pages.mjs              # regenerate q/ c/ sitemap.xml\nnode scripts/build-pages.mjs --dry-run    # preview without writing\n```\n\nGenerated files under `q/` and `c/` are checked into git because GitHub Pages does not run build steps. CI will fail if the committed output drifts from `data.js`.\n\n## JD Coverage Audit\n\nUse the coverage scanner to compare recurring JD keywords against the current bank:\n\n```bash\nnode scripts/jd-coverage.mjs\nnode scripts/jd-coverage.mjs --json\nnode scripts/jd-coverage.mjs --strict\n```\n\n- `scripts/jd-keywords.json` stores the curated keyword sets\n- default mode prints a report without failing your shell\n- `--strict` is useful when you want missing coverage to fail a pipeline or manual gate\n\n## Local Hooks\n\nEnable repository-local Git hooks with:\n\n```bash\n./scripts/setup-hooks.sh\n```\n\nThis configures:\n\n- `pre-commit` → `./scripts/check-fast.sh`\n- `pre-push` → `./scripts/check-full.sh`\n\nThese hooks reduce manual validation work locally, but they do not replace pushing to GitHub. GitHub Pages still updates only after a remote push triggers the workflow.\n\n## Community\n\n- [Contributing Guide](./CONTRIBUTING.md)\n- [Code of Conduct](./CODE_OF_CONDUCT.md)\n- [Security Policy](./SECURITY.md)\n- GitHub Discussions is enabled for ideas, Q\u0026A, and longer-form collaboration\n\n## Roadmap Ideas\n\n- ~~wrong-answer / weak-topic mode~~ — shipped in v2026-04-08\n- exportable question packs\n- scheduled review plans\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcan4hou6joeng4%2Finterview-prep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcan4hou6joeng4%2Finterview-prep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcan4hou6joeng4%2Finterview-prep/lists"}