ashike.s

AshiHQ: my portfolio, job hunt and freelance business in one app

My work lived in a dozen places: a stale portfolio, job spreadsheets, freelance notes and client logins in chats. I built AshiHQ: a portfolio with a self-publishing case-study CMS, plus a private admin with job discovery and matching, client projects and earnings, project docs and a zero-knowledge credential vault.

28 Oct 2026 6 min read Web Applications Own productVisit project
AshiHQ: my portfolio, job hunt and freelance business in one app — screenshot

0

Passwords the server can read

3

Job sources matched daily (Adzuna, Jooble, Indeed)

600k

PBKDF2 iterations protecting the vault

37

Automated backend tests

Table of contents
  1. 1.The business problem
  2. 2.Why existing solutions failed
  3. 3.The solution
  4. 4.Key features
  5. 5.Technical architecture
  6. 6.Challenges
  7. 7.The outcome
  8. 8.What this means for other businesses

The business problem

As a full-stack developer with a day job and freelance clients, my working life was spread across a dozen places:

  • A portfolio that needed a code change and a redeploy for every new project, so it was always out of date.
  • A job hunt in spreadsheets: which company, which role, which résumé I'd sent, and when to follow up, with no way to tell which résumé actually got responses.
  • Freelance projects tracked in notes and chats: budgets, what was paid, paid add-ons (like "Android and iOS apps" after a website), and deadlines.
  • Client credentials everywhere: Zoho mail, GoDaddy domains, AWS, Cloudflare R2… in notes and messages, which is risky for me and my clients.
  • Job searching by hand across LinkedIn, Naukri and Indeed, with three different résumés for three kinds of roles.

I wanted one place that is my public face and my private command centre: secure, mobile-friendly, and quick enough to use every day.

Why existing solutions failed

  • Portfolio builders look generic, and they don't support detailed case studies with diagrams or link to the work behind them.
  • Job trackers (spreadsheets, Notion templates, Huntr-style apps) record applications but don't find jobs, score them against your résumés, or tell you which résumé works.
  • Freelance tools handle invoicing, but not "this client also has GoDaddy, Zoho and AWS logins" plus project docs.
  • Password managers are great, but they're separate from the client and project they belong to, and team plans cost money.
  • Gluing five tools together means five logins, five subscriptions and nothing that connects.

The solution

AshiHQ is a single app with two sides:

  1. The public portfolio at ashike.in: fast, animated, and fully editable from the admin, with a case-study CMS.
  2. A private admin (just for me, with two-factor login) for the job hunt, freelance clients and projects, project docs and an encrypted credential vault.

dashboard

A portfolio I can update in minutes

  • Every section is editable from the admin: profile, stack, services, experience, projects, skills and education. No code changes.
  • Multiple résumés, with one marked public as the portfolio's download.
  • Motion design done carefully: text that reveals as you scroll, a statement that lights up word by word, marquees, tilt cards and magnetic buttons. All of it respects "reduce motion" settings.
  • Brand icons on every tech chip, lightened automatically so they stay readable on the dark theme.

A case-study CMS that publishes itself

  • A Markdown editor with live preview, image upload, Mermaid diagrams, and a template with an eight-part structure (problem → why existing solutions failed → solution → features → architecture → challenges → outcome → lessons).
  • Case-study pages with a table of contents that follows your scroll, highlights, a technology list and related studies.
  • Publishing triggers a site rebuild automatically. The site is a static export for speed, so each new case study gets its own pre-rendered page with proper link previews on WhatsApp and LinkedIn within about two minutes. Until then, a fallback page loads it live.

case study cms

A job hunt that finds jobs for me

  • Job tracker: status pipeline (wishlist → applied → screening → interview → offer), follow-up reminders, and response rate per résumé. I can see whether my Laravel, FDE or React résumé is getting replies.
  • Role profiles: for each target role, the résumé to use, search phrases, the skills to score on, words to skip, cities (or Remote), applications per day and a minimum match score.
  • Daily discovery from job APIs (Adzuna, Jooble). Each job is scored against every profile: points for the skills it mentions and for its title matching the role. It goes to the profile it fits best, up to that day's limit.
  • Indeed, through Claude: a scheduled Claude task searches Indeed through the official connector every morning and writes a file that I import with one click. Jobs are de-duplicated by title, company and city, because Indeed's ids change between searches.
  • A review queue: each match shows its score, the matched skills, salary and the résumé to use. Open job → apply → Mark applied logs it in the tracker automatically.
  • LinkedIn and Naukri get one-click saved searches (last 24 hours, per role and city). Those platforms don't allow automated applying, so AshiHQ never submits applications for me; it only finds, ranks and records them.

job engine

applications resumes

Freelance projects with real numbers

  • Clients and projects with budgets, payments, deadlines, live URLs (website, API, admin) and Git clone URLs.
  • Paid add-ons (quoted → approved → delivered), counted in what's due only once the client has agreed.
  • Lifetime earnings and money still to collect on the dashboard.
  • Project docs: upload a project's own planning folder (architecture.md, task.md, issues.md…). AshiHQ reads it into a visual overview: tasks done, the current phase, open issues by severity, test runs and Mermaid diagrams. The screenshot is AshiHQ's own build plan, documented inside AshiHQ.

projects docs

A vault where the server never sees a password

Client logins are stored zero-knowledge:

  • Encrypted in the browser with a key derived from a master password (PBKDF2-SHA256, 600,000 iterations → AES-256-GCM). The server only ever stores ciphertext.
  • Templates per service (Zoho Mail, GoDaddy, Cloudflare R2, AWS…) so every field lands in the right place.
  • Linked to the client and project it belongs to, or kept as personal, with filters for each.
  • The master password can be changed by re-encrypting everything in the browser; there's no server-side reset, by design.

vault

Key features

  • Editable portfolio with motion design and multiple résumés
  • Case-study CMS: Markdown, images, Mermaid, table of contents, automatic site rebuild on publish
  • Job tracker with follow-ups and response rate per résumé
  • Job discovery: role profiles, match scoring, daily limits, review queue
  • Multiple sources: Adzuna and Jooble APIs, daily Indeed import through Claude, LinkedIn and Naukri saved searches
  • Clients and projects with links, Git URLs, paid add-ons and lifetime earnings
  • Project docs overview built from Markdown planning files
  • Zero-knowledge credential vault with service templates
  • Two-factor login, mobile-friendly admin

Technical architecture

  • Front end: Next.js 16 (App Router) as a static export on Vercel, with React 19, Tailwind CSS v4 and lucide icons. The admin is the same app, so the whole site is fast and served from Vercel's network.
  • API: Laravel 12 with Sanctum tokens and TOTP two-factor authentication, on Hostinger with MySQL. Rate-limited public endpoints serve the portfolio and case studies.
  • Fresh content on a static site: pages are pre-built; anything newer is served by a fallback page (Vercel rewrites); publishing calls a Vercel deploy hook so the next build includes it.
  • Job discovery: a scheduled Laravel command; sources behind a common interface; per-source call budgets so free API tiers (e.g. Adzuna's 25-call trial) can't be spent in one run; one country-wide search per profile, filtered to my cities (Bangalore/Bengaluru, Kochi/Cochin…).
  • Quality: feature tests for every module (37 at the time of writing). Tests block all outside requests, so they can never touch real API keys.

Challenges

  • A static site that still feels live. Static export makes the portfolio fast, but new case studies 404'd until the next deploy, and link previews were generic. A fallback page, Vercel rewrites and an automatic deploy hook on publish fixed both.
  • Encryption you can actually live with. Zero-knowledge means no "forgot password". The vault makes that explicit at setup, derives keys with 600k PBKDF2 iterations, and supports changing the master password by re-encrypting in the browser.
  • Free API tiers. My first discovery design used 36 Adzuna calls per run, more than the entire 25-call trial. Switching to one broad search per profile plus server-side call budgets brought it to 3 calls a day.
  • Messy job data. Indeed's ids and short links change between searches, so de-duplication uses title + company + city. Jooble keys only work for the country site that issued them, so a jooble.org key returns US jobs.
  • Small bugs with big effects: a query alias that clashed with a model accessor showed "0 active projects", and add-ons on lead-stage projects weren't counted. Each fix got a regression test.

The outcome

  • One app for my professional life: portfolio, case studies, job hunt, clients, projects, docs and credentials.
  • Publishing is a two-minute job: write in the admin, press publish, and the site rebuilds with proper link previews. Six case studies so far, including this one.
  • A focused job search: three tailored résumés, matches scored and queued each morning, and every application recorded with the résumé that was sent.
  • Client credentials out of chats and notes, encrypted so that even a server breach wouldn't reveal them.
  • A living example of how I work: typed, tested, documented, and secured. AshiHQ even holds its own build plan and issue list.

What this means for other businesses

The same building blocks fit many small businesses and freelancers:

  • A CMS shaped around your content (case studies, menus, listings) rather than a generic template.
  • Automation that does the boring part: finding leads, scoring them and lining them up for a human decision, without breaking any platform's rules.
  • Zero-knowledge storage for anything sensitive your team shares: logins, keys, client data.
  • One tool instead of five subscriptions, built around how you actually work.

Juggling too many tools to run your work? I can build you one that fits.