Skip to content

devsanantonio/next-devsa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

89 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

DEVSA - San Antonio Tech Community Hub

DEVSA is the central platform connecting San Antonio's tech community. We bridge the gap between passionate builders, local partners, and the growing tech ecosystem.

🌐 Live Site: devsa.community

About

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

We found 20+ tech-focused organizations scattered across the city, not collaborating and living in their own bubbles. So we built DEVSA to bring them togetherβ€”a platform where you can discover tech communities that match your interests and where these groups can collaborate, share resources, and grow stronger together.

Tech Stack

Getting Started

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm

Installation

# Clone the repository
git clone https://github.com/your-org/next-devsa.git
cd next-devsa

# Install dependencies
pnpm install

# Set up environment variables
cp .env.example .env.local
# Edit .env.local with your keys (see Environment Variables section)

# Start development server
pnpm dev

The app will be running at http://localhost:3000

Environment Variables

Create a .env.local file with:

# Convex
NEXT_PUBLIC_CONVEX_URL=your_convex_url
CONVEX_DEPLOYMENT=dev:your-deployment

# MAGEN (Bot Protection)
MAGEN_API_KEY=your_magen_api_key
MAGEN_SECRET_KEY=your_magen_secret_key

# Resend (Email) - Set in Convex dashboard for production
AUTH_RESEND_KEY=your_resend_api_key
AUTH_RESEND_FROM=Your Name <[email protected]>

Project Structure

next-devsa/
β”œβ”€β”€ app/                      # Next.js App Router
β”‚   β”œβ”€β”€ page.tsx              # Homepage
β”‚   β”œβ”€β”€ layout.tsx            # Root layout with navbar/footer
β”‚   β”œβ”€β”€ globals.css           # Global styles & Tailwind
β”‚   β”œβ”€β”€ api/                  # API routes
β”‚   β”‚   β”œβ”€β”€ magen/            # MAGEN bot protection endpoints
β”‚   β”‚   └── og/               # Open Graph image generation
β”‚   β”œβ”€β”€ events/               # Events pages
β”‚   β”‚   β”œβ”€β”€ page.tsx          # Community calendar
β”‚   β”‚   β”œβ”€β”€ create/           # Create event page
β”‚   β”‚   β”œβ”€β”€ community/[slug]/ # Dynamic community event pages
β”‚   β”‚   β”œβ”€β”€ morehumanthanhuman/ # AI Conference page
β”‚   β”‚   └── pysanantonio/     # PySA event page
β”‚   β”œβ”€β”€ coworking-space/      # Geekdom coworking page
β”‚   └── signin/               # Authentication page
β”‚
β”œβ”€β”€ components/               # React components
β”‚   β”œβ”€β”€ hero-bridge.tsx       # Main hero section
β”‚   β”œβ”€β”€ hero-communities.tsx  # Community showcase grid
β”‚   β”œβ”€β”€ partner-section.tsx   # Partners carousel
β”‚   β”œβ”€β”€ magen-newsletter-cta.tsx # Community spotlight section
β”‚   β”œβ”€β”€ navbar.tsx            # Navigation bar
β”‚   β”œβ”€β”€ footer.tsx            # Site footer
β”‚   β”œβ”€β”€ events/               # Event-specific components
β”‚   β”œβ”€β”€ coworking-space/      # Coworking page components
β”‚   β”œβ”€β”€ pysa/                 # PySA event components
β”‚   β”œβ”€β”€ aiconference/         # AI Conference components
β”‚   └── icons/                # SVG icon components
β”‚
β”œβ”€β”€ convex/                   # Convex backend
β”‚   β”œβ”€β”€ schema.ts             # Database schema
β”‚   β”œβ”€β”€ auth.ts               # Authentication config
β”‚   β”œβ”€β”€ events.ts             # Event mutations/queries
β”‚   β”œβ”€β”€ users.ts              # User mutations/queries
β”‚   β”œβ”€β”€ newsletter.ts         # Newsletter subscriptions
β”‚   β”œβ”€β”€ speakers.ts           # Speaker submissions
β”‚   └── _generated/           # Auto-generated Convex types
β”‚
β”œβ”€β”€ data/                     # Static data files
β”‚   β”œβ”€β”€ communities.ts        # Tech community listings
β”‚   β”œβ”€β”€ events.ts             # Community events
β”‚   β”œβ”€β”€ partners.ts           # Partner organizations
β”‚   └── pysa/                 # PySA event data
β”‚       β”œβ”€β”€ sessions.ts       # Conference sessions
β”‚       β”œβ”€β”€ speakers.ts       # Speaker information
β”‚       └── sponsors.ts       # Event sponsors
β”‚
β”œβ”€β”€ lib/                      # Utility functions
β”‚   β”œβ”€β”€ utils.ts              # General utilities (cn, etc.)
β”‚   └── magen.ts              # MAGEN verification helpers
β”‚
β”œβ”€β”€ types/                    # TypeScript type definitions
β”‚   └── magen.d.ts            # MAGEN types
β”‚
└── public/                   # Static assets

Contributing

We welcome contributions from the San Antonio tech community! Here's how you can help:

Adding a New Community

  1. Edit data/communities.ts
  2. Add your community object following the existing format:
{
  id: "your-community-id",
  name: "Your Community Name",
  description: "Brief description of your community",
  logo: "https://your-logo-url.png",
  color: "#yourBrandColor",
  website: "https://your-website.com",
  meetup: "https://meetup.com/your-group",
  discord: "https://discord.gg/your-invite",
}

Adding a New Partner

  1. Edit data/partners.ts
  2. Add your partner organization:
{
  id: "partner-id",
  name: "Partner Name",
  logo: "https://partner-logo-url.png",
  description: "What the partner does",
  website: "https://partner-website.com",
}

Pull Request Process

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/add-my-community
  3. Make your changes
  4. Test locally with pnpm dev
  5. Commit with a clear message: git commit -m "Add XYZ Community to listings"
  6. Push to your fork: git push origin feature/add-my-community
  7. Open a Pull Request with a description of your changes

Development Commands

pnpm dev          # Start development server with Turbopack
pnpm build        # Build for production
pnpm start        # Start production server
pnpm lint         # Run ESLint

Convex Commands

npx convex dev    # Start Convex development server
npx convex deploy # Deploy to production
npx convex env list --prod  # List production env vars

Connect With Us

About

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages