The Problem
AmericanTamil.org exists to serve the Tamil diaspora community in the United States, publishing articles, books, cultural content, and community resources for Tamils living far from home. The community had a real need: a platform that felt professional, ranked well on Google, and gave their editorial team full control over content without needing a developer for every update.
The challenge was more layered than it first appeared. The content team was non-technical. The book library needed access control, not everyone should be able to download everything. Blog publishing needed a proper rich text experience, not raw HTML or a generic third-party CMS that the team would never adopt. And the whole thing needed to be built, deployed, and maintained by one developer.
What Was Built
The public-facing website was built with Nuxt 2 in SSR mode. SEO was a primary distribution channel. The Tamil diaspora finds content through Google searches, so server-side rendering was chosen to make articles, book listings, and pages available to search crawlers from launch.
Firebase was chosen as the backend: Firestore for the database, Firebase Storage for PDFs and images, Cloud Functions for server-side logic, and Firebase Auth with custom JWT claims for role management. For a solo developer building a content platform with no infrastructure budget, this was the right stack. It eliminated the need to manage servers, handle deployments of a separate backend, or set up a database cluster.
The CMS
The most significant piece of work on this project was the custom CMS. Rather than integrating a third-party solution, a complete admin panel was built from scratch (one that gave editors control over every line of content on the website. Article titles, body text, hero sections, navigation labels, book descriptions, author profiles) all editable through a clean interface built specifically for how the editorial team actually worked.
This decision was deliberate. Generic headless CMS platforms require configuration, have learning curves, and often introduce abstractions that don't match the mental model of a non-technical team. A custom admin panel that looked and felt like the website it controlled meant the team needed almost no training. After a single walkthrough, editors were publishing independently.
Quill.js was used as the rich text editor through vue2-editor. It gave editors a familiar word-processor-like experience (bold, italic, image embedding, links, formatting) without any HTML knowledge required. Image uploads from within the editor went directly to Firebase Storage, with dimensions normalized via Cloud Functions before storage.
The Book Library
The PDF book library was one of the more technically interesting parts of the platform. Books were stored in Firebase Storage, but direct URLs were never exposed. Instead, Cloud Functions generated time-limited signed URLs on demand, URLs that expired after a short window to limit the lifetime of download access.
The platform is nonprofit and fully free. Downloads are available to registered users. Admin and editor roles had full access. Users could download. Guests could browse descriptions but not download. This was enforced server-side through the JWT claims system, the signed URL generation function validated the user's role before issuing a URL, so access checks did not depend only on the client.
Role-Based Access Control
Three roles were implemented: Admin, Editor, and User. Firebase Auth handled the authentication layer, while custom JWT claims carried the role information. Cloud Functions handled role assignment server-side, ensuring no client could self-assign a higher role. Nuxt middleware enforced route-level access control, redirecting users to the appropriate page before any content loaded.
reCAPTCHA v3 was added to contact forms to prevent spam submissions, processed through Cloud Functions that also handled email notification delivery.
The Outcome
AmericanTamil.org launched as a live production platform, fully SSR, with a working CMS, a members-only book library, blog publishing, role-based access, and a contact system, all built and shipped solo alongside other client work. The editorial team took over content management within days of launch and have operated independently since. The platform ranks for Tamil diaspora content on Google, which was the primary goal from day one.
Stack
- Nuxt 2 (SSR)
- Firebase (Firestore, Auth, Storage, Cloud Functions)
- Firebase Admin
- Node.js
- Vuex
- VuexFire
- Quill.js
- vue2-editor
- PWA
- JWT
- reCAPTCHA
- Luxon
- SCSS
- GCP