Skip to content

About

The source of devsa.community: San Antonio's tech community calendar, directory and conference pages.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

510 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

DEVSA β€” San Antonio Tech Community Hub

DEVSA connects the people building San Antonio tech: the active learners and builders, the city's tech community groups, and the partners who back the work. This is the source of devsa.community: one calendar, one public directory, and the pages for the rooms DEVSA puts on.

🌐 Live Site: www.devsa.community

About

DEVSA started with a simple question: "Where is the tech community in San Antonio?"

The groups were always here. They ran in separate orbits, with no shared calendar and no single place for a newcomer to find them. In April 2024 there were about ten we could find; today there are 25, on one calendar, alongside the partners who back them.

DEVSA's work is the rooms: getting the people who build San Antonio tech into the same place. The calendar and the directory exist so those rooms are easy to find, and nothing on the calendar is a sales pitch.


What's on the site

The rooms DEVSA puts on. Each conference has its own pages under app/events/:

Route What it is
/events/pysanantonio PySanAntonio, San Antonio's Python conference, with the 2025 sessions and livestream
/events/morehumanthanhuman More Human Than Human, DEVSA's AI conference
/events/access-granted Access Granted, a hands-on security room during SA Startup + Tech Week
/events/the-model The Model: creatives, founders and builders in the same room
/events/zero-to-agent Zero to Agent, San Antonio's part of Vercel's global build week

The community calendar (/events). Every group's events in one list, with a page per event at /events/[slug], RSVPs (with a waitlist past capacity, and a reminder email the day before), and calendar subscriptions for Google, Apple and Outlook. It's how people find the rooms, DEVSA's and everyone else's. /events/embed is the same calendar for other sites to embed in an iframe, and the only page that may be framed.

Give a talk (/give-a-talk). Every group currently looking for speakers, in one place, beside an open form for anyone who doesn't know which group their talk fits. Organizers open their group's call from the admin, which adds a talk form to the group's page (/buildingtogether/[slug]#speak); talks to the open pool reach DEVSA, which shares each one with a group that fits, with the speaker's consent.

Building Together (/buildingtogether). The 25 community groups and the partners who back the work, with a page for each at /buildingtogether/[slug]. It also explains how DEVSA helps a group put something on (DEVSA doesn't run your event; it finds the room, the people who can teach, and access to a network of builders), and takes donations at #donate, through Stripe.

About (/about). Where DEVSA came from, and the volunteer board that runs it.

localhost (/localhost, short link /210). Three small pieces made from San Antonio's open data, to get people curious about what the City, Bexar County, VIA and other agencies publish: following the water through three centuries of downtown, the City's building permits on a map, and a game racing a real VIA bus up San Pedro. The data is fetched live or shipped as files in public/localhost/; the reusable starter is the separate localhost repo.

DEVSA TV (/tv). DEVSA programming coming to TVSA, San Antonio's public access channel, in December 2026 (Spectrum 20, Grande 19, AT&T 99), and to DEVSA's YouTube.

Also in here:

  • Three Vercel crons in vercel.json: the Monday digest of the week's events in the Discord (/api/events/weekly-digest), weekday prompts there (/api/discord/prompts: a question or poll in #vibe-chat, Build-and-tell Friday in #build-and-tell), and the daily day-before reminder to everyone who RSVP'd (/api/events/reminders).

  • A public events feed. RSS at /api/events/feed, with a schema and an iCalendar subscription. It's documented, with examples, in community-calendar-api.

  • llms.txt for AI agents that read the site.

  • Admin (/admin). Where organizers run their group and DEVSA runs the site. Sign in with Google or an emailed link; access is an approved email in Firestore, with one of two roles:

    • organizer: their own group's events, RSVPs, speakers and listing. Anyone can request access from /signin; an admin approves it and picks the group they'll run. The portal only ever grants this role.
    • admin: everything, including partners, the open pool of talks, the newsletter and Manage Admins. Admins are made by hand (see below), and only the site's owner can change or remove one.

    Every change is logged in the Activity tab, and deletes can be restored from it. The newsletter composer stays hidden until its unsubscribe secret and postal address are set; see CLAUDE.md.

  • /coworking-space, a thank-you to Geekdom and the volunteers who kept the coworking space open. The space closed in September 2026.


Tech Stack


Getting Started

Prerequisites

  • Node.js 20.9+
  • pnpm
  • For anything that reads events, groups or partners, access to Firebase, one of two ways:
    • DEVSA's own: a Vercel account on the devsa team. The server reaches Firebase keylessly: with the four GCP_* variables from .env.example set, it exchanges your Vercel CLI login for short-lived Google credentials. Run vercel login and vercel link once. No service-account key is needed, or exists.
    • Your own: a Firebase project with Firestore (a database named devsa) and Authentication, and a service-account key in GOOGLE_SERVICE_ACCOUNT_KEY.

Setup

git clone https://github.com/devsanantonio/next-devsa.git
cd next-devsa
pnpm install
cp .env.example .env.local   # then fill in what you need
pnpm dev

The app runs at http://localhost:3000. .env.example says what each variable is for. Most features fail soft when their keys are absent, so plenty of changes (copy, layout, components, lint fixes) need no keys at all.

Creating the first admin

The portal never grants admin; it only adds organizers. On a new deployment, make the first admin by hand: add a document to approved_admins in the devsa Firestore database with email (lowercase), role: "admin" and approvedAt. Put the site owner's email in lib/protected-admins.ts too, so no one can remove or demote them.


How the codebase is organized

Standard Next.js App Router layout: routes in app/, UI in components/, server helpers and third-party clients in lib/, and types and small seed arrays in data/.

Firestore is the source of truth for groups, partners and events, and nothing shadows it. Add or delete one in the admin and every page follows. Read them through the API routes (/api/communities, /api/partners, /api/events) on the client, or lib/partners.ts on the server. Don't add a static copy: CLAUDE.md explains what happened the last time there was one.

Before adding or restyling a section, read the design system in .claude/skills/design-system/SKILL.md. There's no component library, so it's what keeps the pages consistent.


Development Commands

pnpm dev             # Dev server (Turbopack)
pnpm build           # Production build: the real gate, since the test suite is small
pnpm exec vitest run # All tests
pnpm test:feed       # Just the events feed contract test
pnpm lint            # ESLint (already fails on main; see below)
pnpm lint:fix        # ESLint with autofix

pnpm lint reports a handful of errors that are already on main. That doesn't mean your change broke something: compare against main, and don't add new ones. Fixing the existing ones is a good first issue.


Contributing

We welcome contributions from the San Antonio tech community, and first-time contributors especially. Start with an issue labeled good first issue, and read CONTRIBUTING.md.

  1. Fork the repository and clone your fork
  2. Branch: git checkout -b your-change
  3. Install and run: pnpm install, then pnpm dev
  4. Check your work: pnpm build must pass, and pnpm lint should show no new errors
  5. Open a pull request saying what you changed, why, and how you checked it. Add screenshots for anything visual.

Want your group listed? Groups and partners are managed in the admin, not in code. Ask in the Discord.

Want to build on DEVSA's data, or San Antonio's? See community-calendar-api for the calendar, localhost for the City, County and VIA's open data, and devsa-sessions for the live build sessions.


License

The code is MIT. The DEVSA name and logos, and the photographs, community and partner logos in public/, are not covered by it. See LICENSE.


Connect With Us

About

The source of devsa.community: San Antonio's tech community calendar, directory and conference pages.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages