Skip to content

TampaDevs/tampa.dev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

245 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tampa.dev Events API & Website

This repository contains both the Events API and the tampa.dev website for discovering tech events in the Tampa Bay area.

Add Your Group

Want your group included in the Tampa Bay events feed?

Add Your Group


API Documentation

Interactive API documentation with all available endpoints is available at:

https://api.tampa.dev/docs

The OpenAPI specification is available at:

https://api.tampa.dev/openapi.json

API Clients

Auto-generated API clients are available for multiple languages. Clients are automatically regenerated and published when the API schema changes.

TypeScript / JavaScript

npm install @tampadevs/events-api-client --registry=https://npm.pkg.github.com
import { EventsApi } from '@tampadevs/events-api-client';

const api = new EventsApi();
const events = await api.getEvents();

Go

go get github.com/TampaDevs/tampa.dev/clients/go
package main

import (
    "context"
    "fmt"
    tampaevents "github.com/TampaDevs/tampa.dev/clients/go"
)

func main() {
    cfg := tampaevents.NewConfiguration()
    client := tampaevents.NewAPIClient(cfg)

    events, _, err := client.EventsAPI.GetEvents(context.Background()).Execute()
    if err != nil {
        panic(err)
    }

    for _, event := range events {
        fmt.Println(event.GetTitle())
    }
}

Python

pip install git+https://github.com/TampaDevs/tampa.dev.git#subdirectory=clients/python
from tampa_events_api import ApiClient, EventsApi

client = ApiClient()
api = EventsApi(client)

events = api.get_events()
for event in events:
    print(event.title)

Ruby

gem install tampa_events_api --source "https://rubygems.pkg.github.com/tampadevs"
require 'tampa_events_api'

api = TampaEventsAPI::EventsApi.new

events = api.get_events
events.each do |event|
  puts event.title
end

Sign in with Tampa.dev

Add Tampa.dev authentication to your app with OAuth 2.1 + PKCE. Give your users single sign-on with the Tampa Bay tech community.

Check out this demonstration app with source code.

Sign in with Tampa.dev Sign in with Tampa.dev

  1. Register your app in the Developer Portal or via the dynamic client registration API
  2. Redirect users to https://tampa.dev/oauth/authorize with PKCE parameters
  3. Exchange the authorization code for an access token at https://tampa.dev/oauth/token
  4. Use the token to call the Tampa.dev API (https://api.tampa.dev/v1/me, etc.)

Full integration guide: https://tampa.dev/developer/docs/signin-with-tampadev

JSON Schemas

JSON Schema definitions for all data models are available in schemas/models/:

Quick Start

Events API

Get all upcoming events:

GET https://api.tampa.dev/events

Get the next event for each group:

GET https://api.tampa.dev/events/next

Feed Formats

RSS Feed:

https://api.tampa.dev/rss

iCalendar Feed:

https://api.tampa.dev/ical

HTML Pages

Upcoming Events Page:

https://api.tampa.dev/html

Filters

All endpoints support optional query parameters:

  • groups - Comma-separated list of group urlnames (e.g., tampadevs,suncoast-js)
  • noempty - Exclude groups with no upcoming events
  • noonline - Exclude online events
  • within_hours - Only show events within the next N hours
  • within_days - Only show events within the next N days

Example:

https://api.tampa.dev/events?groups=tampadevs&noonline=1

Widgets

Next Event Widget

https://api.tampa.dev/widget/next-event?groups=tampadevs

Displays the next upcoming event for the specified group(s).

Events Carousel

https://api.tampa.dev/widget/carousel

Displays a carousel of upcoming events.

Development

Events API

To start the local API development environment:

npm install
npm start

Your local instance of the Events API will become available at http://localhost:8787.

npm test

Website (tampa.dev)

The website is a React Router 7 app deployed to Cloudflare Workers.

cd web
npm install
npm run dev

Your local instance will be available at http://localhost:5173.

npm run typecheck  # Type check
npm test           # Run tests
npm run build      # Build for production

Environment Variables

Copy .dev.vars.example to .dev.vars and fill in the required values:

cp .dev.vars.example .dev.vars

Required for Authentication

  • GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET - GitHub OAuth app credentials
  • SESSION_SECRET - Random secret for session signing (generate with openssl rand -base64 32)

Required for File Uploads (R2)

User avatars and OAuth app logos are stored in Cloudflare R2:

  1. Create an R2 bucket named tampa-dev-uploads-public in the Cloudflare dashboard
  2. Create an R2 API token with Object Read & Write permissions
  3. Set these environment variables:
    • R2_ACCOUNT_ID - Your Cloudflare account ID
    • R2_ACCESS_KEY_ID - R2 API token access key
    • R2_SECRET_ACCESS_KEY - R2 API token secret key
    • UPLOADS_PUBLIC_URL - (Optional) Custom domain for the R2 bucket

Meetup API (for event aggregation)

  • MEETUP_CLIENT_KEY - Meetup OAuth client key
  • MEETUP_MEMBER_ID - Your Meetup member ID
  • MEETUP_SIGNING_KEY - RSA private key for JWT signing

Data Freshness

Data is served from a cache in Workers KV. This cache data is updated every 30 minutes.

Changelog

See CHANGELOG.md for recent updates and new features.

About

Tampa.dev

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors 7