InternTrack started as a simple idea: job hunting generates a mess of spreadsheets, email threads, and sticky notes, and I wanted a single place to track applications, interviews, deadlines, and offers like a real CRM. I gave myself two weeks to ship a working version, end to end, on the MERN stack (MongoDB, Express, React, Node.js). This post covers what that sprint actually looked like, and — in the second half — an ethical, high-level look at Google Dorking, a security-research technique I explored while thinking about how to keep InternTrack's own admin surface from being accidentally exposed.

Designing InternTrack's Architecture

The core of InternTrack is a personal CRM: applications move through stages (Applied → Interviewing → Offer → Closed) on a drag-and-drop Kanban board, with an analytics dashboard summarizing progress across all of them. Getting the board to feel responsive without a heavyweight drag-and-drop library was one of the more interesting front-end problems — it meant being deliberate about where state lived on the React side versus what the backend needed to persist on every card move.

On the backend, Express and MongoDB handle the data layer, with routes scoped per-user so applications, deadlines, and notes never leak across accounts. Authentication uses JWT (JSON Web Tokens) — a short-lived access token for API calls, paired with a longer-lived refresh flow so users aren't forced to log in again every time a token expires. Getting refresh-token handling right (rotating them safely, invalidating old ones, not leaving a window where a stale token still works) was one of the parts I spent the most time getting comfortable with, since auth bugs are the kind that don't show up until they're a real problem.

What Two Weeks Actually Teaches You

A Detour Into Ethical Security Research: Google Dorking

While thinking about what it would mean for InternTrack (or any side project) to accidentally expose an admin panel to the public internet, I spent time learning about Google Dorking — the practice of using advanced search-engine operators (like site:, intitle:, or inurl:) to surface pages that a search engine has indexed but that were never meant to be publicly discoverable. It's a well-known technique in the security-research and OSINT (open-source intelligence) community, and understanding it from a defensive angle is genuinely useful for any developer shipping something public-facing.

A note on intent: everything below is about defensive awareness — recognizing what makes a project accidentally discoverable, and how to prevent it. This is not a guide to accessing or exploiting anything you don't have explicit permission to test.

Why Exposed Admin Panels Happen

Most exposed admin panels aren't the result of some clever attack — they're the result of ordinary oversights: an admin route that was never protected behind authentication during early development and simply never got locked down before deployment, a staging environment left publicly reachable, or default framework routes (like a database admin UI) left at predictable paths with default credentials. Search engines crawl and index whatever is publicly reachable, which means a forgotten `/admin` route can end up searchable without anyone "hacking" anything at all.

Responsible Disclosure

If a security researcher (or a curious developer) comes across something that looks like an exposed admin panel or sensitive endpoint that isn't theirs, the responsible path is responsible disclosure: don't attempt to log in, modify data, or explore further. Instead, look for the organization's published security contact (a security.txt file, a security page, or a support email) and report what was found, when, and how it was discovered — without including anything that could itself be misused. Most organizations have a process for this precisely because they'd rather hear about it from a well-intentioned researcher than from someone with worse intentions.

What Developers Should Do to Prevent This

Bringing It Back to InternTrack

The direct takeaway I applied to InternTrack: every route that touches user data or admin-level actions sits behind the same JWT authentication used for the rest of the app — there's no "temporary" unauthenticated admin route left over from development. It's a small thing, but it's exactly the kind of small thing that Google Dorking research keeps reminding me matters.

Have questions about InternTrack, or want to talk shop about auth flows or secure-by-default design?

Get in touch