Ringkaskata is an independent Indonesian publishing platform I co-founded with a journalism graduate. I built the product end-to-end so freelance writers could publish work that often struggled to pass verification on larger platforms. Our editorial direction is simple: make room for useful, positive, and verified stories amid the noise of online misinformation.
![]()
My Role
As the technical co-founder and sole full-stack developer, I owned the architecture, implementation, deployment, and technical trade-offs from the public site to the internal publishing tools. My co-founder shaped the editorial direction, while four writing contributors create and submit articles.
Product and Editorial Workflow
I built a custom admin dashboard rather than adopting a generic CMS. Contributors prepare articles as drafts, then authorized admins review and publish them. The dashboard supports three access levels: guest, admin, and superadmin.
For authoring, I integrated the TipTap rich-text editor. Writers can source thumbnail images through the Unsplash API or upload their own assets to Cloudinary. This keeps the publishing flow focused while giving the editorial team enough control over content quality and presentation.
Architecture
Ringkaskata runs as a full-stack Next.js application written in TypeScript. Neon provides the serverless PostgreSQL database, with Drizzle ORM as the type-safe schema and query layer. Resend handles passwordless admin access through magic links. The application is deployed on Vercel, with Cloudflare managing DNS.
I added sitemap generation, page metadata, and Google Search Console integration to support discoverability. Ahrefs complements Search Console for SEO monitoring, while Umami Cloud provides privacy-friendly visitor analytics and visibility into audience activity.
Stack Responsibilities
| Technology | Responsibility |
|---|---|
| Next.js | Runs the public publication and custom admin dashboard as one full-stack application. |
| TypeScript | Adds type safety across the frontend, server logic, and shared data contracts. |
| Neon PostgreSQL | Stores application and editorial data in a managed serverless PostgreSQL database. |
| Drizzle ORM | Defines the database schema and provides type-safe queries between Next.js and Neon. |
| Resend | Delivers passwordless magic links for admin authentication. |
| TipTap | Provides the rich-text authoring experience for article drafts. |
| Unsplash API | Lets contributors discover suitable article thumbnails from the dashboard. |
| Cloudinary | Stores and delivers images uploaded manually by the editorial team. |
| Vercel | Hosts and deploys the Next.js application through a framework-native workflow. |
| Cloudflare | Manages the domain and DNS layer. |
| Google Search Console + Ahrefs | Monitor indexing, discoverability, keywords, and search performance. |
| Umami Cloud | Tracks privacy-friendly visitor and content engagement metrics. |
Challenge: Hosting Resilience
An early availability incident exposed friction in the Cloudflare Workers ecosystem for this Next.js application. I evaluated the operational trade-offs and migrated the deployment to Vercel. The move gave the project a more resilient, Next.js-native hosting setup while retaining Cloudflare for DNS management.
Discovery and Impact
The SEO foundation is already producing results: published articles have begun appearing in Google Search. I monitor indexing and search performance through Google Search Console and Ahrefs, then use Umami to understand visitor activity and which content earns attention.
Engineering Workflow
I use Codex as a thinking partner when evaluating technical trade-offs. It accelerates research and brainstorming, while architecture decisions, implementation, and product ownership remain mine.
Why It Matters
Ringkaskata turns a publication bottleneck into an owned platform: writers have a place to publish, editors have a focused workflow, and readers gain a calmer source of useful Indonesian stories.