Skip to content
Sumit063Public

About

Native macOS widgets for developer interview prep: LeetCode & GitHub heatmaps, daily AI system design / OS / networks / DBMS / infra questions with hints, questions from your own resume, answers in Apple Notes. Lightweight WidgetKit, no Xcode needed.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

DevBoard

Native macOS widgets for developers who are leveling up. Your LeetCode and GitHub streaks, a daily LeetCode problem, AI-written interview questions with hints (system design, OS, networks, DBMS, infra), questions spun from your own resume, and a project to build.

macOS 14+ Swift No Xcode Gemini free tier License: MIT

DevBoard widgets stacked in Notification Center (dark) DevBoard widgets stacked in Notification Center (light)

Why DevBoard

  • Zero effort, every day. Open Notification Center and your practice for the day is already there.
  • Practice like a real interview. Questions are specific production scenarios with four progressive hints, not trivia.
  • Grilled on your own work. Hand over your resume once; every day one question probes a project you actually built.
  • Answers in Apple Notes. One click creates a note titled with the question, so your prep stays searchable.
  • Featherweight. Native WidgetKit: no background app, no Electron, no web view. It wakes up once an hour and sleeps the rest of the time.
  • No Xcode. Builds in under a minute with Apple's free Command Line Tools.

The widgets

Widget Sizes What it shows
Activity Large LeetCode + GitHub heatmaps for the last 3 months, streaks 🔥, problems solved, contributions, refresh button
Today Medium, Large LeetCode daily problem + an AI-written system design question
CS Fundamentals Medium, Large One OS, Networks, DBMS and Infra question per day
Build Idea Medium, Large A "build X from scratch" project in C, C++, Java or Python + fresh GitHub repos in a rotating domain (payments, security, banking, OS, databases…)

Large widgets: Today, CS Fundamentals and Build Idea

Click any question title to open the hints page: reveal hints one at a time, then Write answer in Notes.

Hints page

Only titles (marked ↗) are clickable, so you never open something by accident.

Install

Requirements: macOS 14 Sonoma or later and Apple's free Command Line Tools (xcode-select --install).

git clone https://github.com/Sumit063/devboard.git
cd devboard
./setup.sh

setup.sh asks for:

  1. Your LeetCode and GitHub usernames (either can be left blank).
  2. A free Gemini API key (optional, recommended). Get one in a minute at aistudio.google.com/apikey; no card needed. Without it, everything except the AI questions still works.
  3. Your resume (optional): a PDF, DOCX, TXT, Markdown or LaTeX file. See Resume handoff.

It then builds the app and installs it to ~/Applications/DevBoard.app.

Add the widgets: click the date and time in the menu bar → Edit Widgets (or right-click the desktop) → search DevBoard. A stack of Activity (Large) + Today, CS Fundamentals and Build Idea (Medium) fills a laptop-height Notification Center.

The first time you click Write answer in Notes, macOS asks to let DevBoard control Notes. Click Allow.

Resume handoff

Resume-based questions make practice personal: "In your dispatch service, why did you shard Redis by geography, and what happens when a shard fails?"

How it works, with privacy first:

  1. setup.sh extracts the text on your Mac (PDFKit / textutil, nothing installed).
  2. Emails, phone numbers and links are scrubbed locally before anything leaves your machine.
  3. Gemini rewrites the rest into a ~300-word tech profile with no name, employers, schools or locations. Companies become "a large fintech company" and so on.
  4. You review the profile and save, edit or discard it. It is stored only at ~/.config/devboard/profile.txt.
  5. Each day, one question slot (rotating OS → Networks → DBMS → Infra → System design) is written from that profile. It's tagged From your resume, and its note title starts with [RESUME].

Prefer not to send your resume anywhere? Copy profile.example.txt to ~/.config/devboard/profile.txt, write your own summary, and run ./build.sh.

Gemini's free tier may use prompts to improve Google's products. That's why only the anonymized profile is ever used for questions.

Configuration

Everything personal lives in ~/.config/devboard/ (permissions 600), never in this repo:

File Purpose
config.json Usernames and options (see config.example.json)
gemini_key Your Gemini API key
profile.txt Your anonymized resume profile
{
  "leetcode_username": "your-leetcode-username",
  "github_username": "your-github-username",
  "notes_folder": "Daily Problems",
  "resume_questions": true
}

After editing any of these, run ./build.sh. The widget is sandboxed, so settings are copied into the app bundle at build time. Or just run ./setup.sh again.

How it works

Notification Center ─▶ DevBoardWidget.appex (sandboxed, hourly timeline)
                         ├─ LeetCode GraphQL ........ heatmap, solved count, daily problem
                         ├─ GitHub contributions .... heatmap (public page, no token)
                         ├─ build-your-own-x ........ daily project idea (cached 24h)
                         ├─ GitHub search ........... fresh repos for the day's domain
                         └─ Gemini (1 call/day) ..... 5 questions + hints, cached for the day
            clicks ─▶ DevBoard.app (tiny helper, quits when done)
                         ├─ opens links in your browser
                         ├─ hints page (SwiftUI)
                         └─ Apple Notes via AppleScript
  • Refresh: hourly and just after midnight; the Refresh button forces it. All widgets share one fetch.
  • Questions: each subject rotates through ~35 subtopics so days don't repeat. Gemini writes the question, scenario and hints. gemini-2.5-flash is used first (about 5 seconds), and overloaded models fall back automatically.
  • Resilient: any source that fails keeps its last good data; failed question generation retries every 10 minutes.

Project layout:

App/        helper app: link routing, hints page, Notes
Widget/     the four widgets (SwiftUI + WidgetKit)
Shared/     models, fetchers, Gemini question generator
scripts/    resume → profile (text extraction + anonymization)
Support/    Info.plists, entitlements
Tools/      screenshot renderer for this README

Customize

  • Subtopics: edit the lists in Shared/CSGenerator.swift (topics).
  • Interviewer style: edit instructions in the same file.
  • Resume frequency: change resumeSlot(_:) (one per day by default), or set "resume_questions": false.
  • Build-idea domains: edit FreshRepos.topics in Shared/Fetchers.swift.
  • Screenshots: Tools/screenshots/render.sh regenerates the images above from demo data.

Troubleshooting

Problem Fix
DevBoard isn't in Edit Widgets Run ./build.sh again, then close and reopen Edit Widgets. If it's still missing, run killall chronod and try once more.
"Set username in config.json" Run ./setup.sh and enter your usernames.
Questions say "Add a free Gemini API key" Run ./setup.sh and paste a key from AI Studio.
Questions stuck on "Generating…" Gemini's free tier is sometimes overloaded; it retries every 10 minutes. Logs: log show --last 30m --info --predicate 'subsystem == "dev.devboard"'
Notes doesn't open System Settings → Privacy & Security → Automation → enable Notes for DevBoard. Rebuilding may ask again.
Clicking does nothing Only titles marked ↗ are links; the rest is intentionally inert.

Uninstall

./uninstall.sh          # removes the app and widgets, keeps ~/.config/devboard
./uninstall.sh --all    # also deletes your config, key and profile

Your notes in Apple Notes are never touched.

Contributing

Ideas, widgets and fixes are welcome: open an issue or a PR. Good first contributions: more subtopics, Codeforces/HackerRank heatmaps, more build-idea sources, localization.

Credits

License

MIT

If DevBoard helps your prep, a ⭐ helps others find it.

About

Native macOS widgets for developer interview prep: LeetCode & GitHub heatmaps, daily AI system design / OS / networks / DBMS / infra questions with hints, questions from your own resume, answers in Apple Notes. Lightweight WidgetKit, no Xcode needed.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages