programaConNosotros is a community of software engineering students and professionals we co-founded in Tucumán, Argentina, back in 2020 — and the open-source platform we've been building for it since 2024 is live today at programaconnosotros.com.
DIZENZ sponsors the community, and I lead development on the platform alongside a rotating cast of community contributors. This isn't a client project. It's software we build for something we started ourselves, which means we get to feel every rough edge firsthand and every improvement lands where we actually live.
This case study covers how the platform grew from a simple institutional site into a full social network, and the engineering decisions that let a volunteer community keep shipping it.

The Challenge
For its first four years, programaConNosotros ran entirely on WhatsApp and Discord. Events, talks, courses, job postings, and the community's own history lived in chat scrollback — real, valuable, and almost impossible to find again once it scrolled past. A newcomer had no single place to see what the community was, let alone join it.
The original brief in 2024 was modest: build an institutional website. But a static site doesn't solve the actual problem — a chat log isn't an archive, and a community that only exists in group chats has no durable home. What the community actually needed was a place it could own: a platform members could log into, contribute to, and grow through, not just a page that describes it from the outside.
The Approach
The scope grew accordingly. What started as a brochure site became a full social platform with member accounts — profiles, notifications, likes and comments on advice posts, a member directory. Every event, talk, course, and testimonial now lives in a database instead of a chat thread, searchable and permanent.
WhatsApp & Discord
- Events, talks, courses buried in chat scrollback
- Job postings and history lost once they scroll past
- No single place for a newcomer to see what the community even is
The Platform
- Member accounts with profiles and a member directory
- Notifications, likes, and comments on advice posts
- Every event, talk, course, and testimonial in one place
One database, not a chat thread
Every entity the community produces now lives in Postgres — searchable, permanent, and ownable by the people who built it.
The more consequential decision was to build the platform itself as a community project. It's open source, and any member can contribute — which means the platform is also the community's own training ground: engineers who've never shipped production code get to work in a real Next.js/Postgres codebase, open real pull requests, and build a public GitHub history, reviewed and merged by their peers.
Open a real PR
Work in a live Next.js/Postgres codebase — often their first production pull request.
Reviewed by peers
Merged and reviewed by other community members, not outside maintainers.
Public GitHub history
Ships to programaconnosotros.com and becomes part of a public contribution record.
A Real Product, Built in the Open
The stack is Next.js 16 on the App Router with Server Actions instead of a REST layer — the same pattern we use at DIZENZ — backed by Postgres through Prisma: 25 models and 53 migrations covering everything from events and talk proposals to community-built software projects.
Auth is hand-rolled rather than bolted on: bcrypt-hashed passwords, database-backed sessions behind an httpOnly cookie, and rate-limited, time-boxed codes for email verification and password resets. User uploads go straight from the browser to S3 via presigned URLs and are served through CloudFront, and the whole thing deploys itself — Kamal pushes new builds to a self-managed AWS box behind Let's Encrypt on every merge to main, rather than handing that off to a PaaS.
25 models · 53 migrations
Every layer talks through the same typed data layer instead of a REST API.
deploys itself on every merge to main
One bug is a good example of the kind of detail this scale of project runs into. Event flyers are 4-5MB photos straight from a phone, and WhatsApp silently drops a link preview once the image crosses roughly 600KB-1MB — so shared event links were rendering the community logo instead of the actual flyer. The fix was to route every flyer through Next's own image optimizer before handing the URL to social crawlers, producing a resized, scraper-friendly og:image on the fly instead of pointing at the raw upload.
Raw Flyer Upload
- 4–5MB photos straight from a phone
- WhatsApp drops the preview past ~600KB–1MB
- Shared links rendered the community logo instead
Optimized on the Fly
- Every flyer routed through Next's image optimizer
- Resized, scraper-friendly og:image generated per request
- Social crawlers get the real flyer, not a fallback
The fix
Point crawlers at the optimizer, not the raw upload — no re-encoding pipeline to maintain.
Because the whole codebase is open to contributors working in parallel, the dev environment had to scale with them: every git worktree gets its own isolated Postgres database, spun up and seeded automatically, so two people — or two AI agents — can work on unrelated features at the same time without stepping on each other's data.
New git worktree
Each contributor — or AI agent — checks out an isolated worktree for their feature.
Isolated Postgres DB
A dedicated database spins up and seeds itself automatically, no manual setup.
Parallel, no collisions
Two people, or two AI agents, work on unrelated features without touching each other's data.
What We Shipped
The platform now covers more than 30 routes across the community's full activity:
Event Management
Creation, registration with capacity limits, sponsor listings, and a call-for-speakers pipeline that turns an approved proposal into a scheduled talk.
Talks, Courses & Projects
A talks archive, a curated courses catalog, a community-built software projects showcase, and a podcast page.
Reading Club
A book library and an in-platform article reader that fetches, cleans, and safely renders external articles server-side.
Tools, History & Gallery
A tools catalog, an illustrated community history page, a photo gallery, and curated highlights pulled from the community's own WhatsApp conversations.
Testimonials & Announcements
Member testimonials, community announcements, and in-app notifications.
Admin Layer
Analytics dashboards, page-visit tracking, and application/error log viewers — built in-house instead of bolted on from a third-party SDK.
Results
The platform has been in continuous development since 2024, built and reviewed the way we'd build any production product:
1,338
commits since June 2024
305
merged pull requests
18
contributor identities
~46,000
lines of TypeScript across ~480 files
A local pre-push gate
Lint, format check, tests, and build — enforced locally before any change reaches the shared branch, with 68 test suites covering the server-action layer.



