FtC Hackathon project
  • TypeScript 80.5%
  • Gherkin 10%
  • JavaScript 6.7%
  • Shell 2.3%
  • Dockerfile 0.5%
Find a file
Day Waterbury 1cd3a9c862 Fix video overflow: clip container to prevent video extending past screen edge
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-17 03:13:24 -07:00
.claude Add Ralph Wiggum loop for autonomous team-agent iterations 2026-03-14 19:35:35 -07:00
app Fix camera zoom, video sizing, and remove always-on dark overlay 2026-03-17 02:44:14 -07:00
assets The whole PNM frontend from Oliver 2026-03-15 02:25:56 +01:00
components The whole PNM frontend from Oliver 2026-03-15 02:25:56 +01:00
constants The whole PNM frontend from Oliver 2026-03-15 02:25:56 +01:00
docker Fix: run enum migrations on existing databases 2026-03-16 16:19:34 -07:00
docs Replace Supabase with PostgreSQL + Express in a single Docker container 2026-03-14 20:00:22 -07:00
server Add real-time reactivity via Server-Sent Events 2026-03-16 23:24:14 -07:00
src Fix video overflow: clip container to prevent video extending past screen edge 2026-03-17 03:13:24 -07:00
tests Single nav bar: move all screens into (tabs), delete AppFooter 2026-03-17 01:21:35 -07:00
.dockerignore [hosting] Add Docker and docker-compose configuration for Coolify deployment 2026-03-14 14:48:19 -07:00
.env.example Replace Supabase with PostgreSQL + Express in a single Docker container 2026-03-14 20:00:22 -07:00
.gitignore Add Playwright E2E tests for web app 2026-03-15 05:06:01 -07:00
app.json The whole PNM frontend from Oliver 2026-03-15 02:25:56 +01:00
CLAUDE.md Update CLAUDE.md: clarify BDD workflow with E2E testing 2026-03-16 17:20:54 -07:00
CONTRIBUTING.md Replace Supabase with PostgreSQL + Express in a single Docker container 2026-03-14 20:00:22 -07:00
cucumber.js Add Cucumber BDD + Jest test suite with behavior manifest 2026-03-14 23:26:38 -07:00
Dockerfile Add video upload endpoint for persistent video storage 2026-03-15 03:23:30 -07:00
expo-env.d.ts The whole PNM frontend from Oliver 2026-03-15 02:25:56 +01:00
jest.config.js Add Cucumber BDD + Jest test suite with behavior manifest 2026-03-14 23:26:38 -07:00
LICENSE Initial commit 2026-03-14 17:50:21 +00:00
LINEAR-ISSUE-TEMPLATE.md Basic docs, setup, onboarding, etc. 2026-03-14 13:28:52 -07:00
package-lock.json Update package-lock.json for deploy 2026-03-15 06:23:20 -07:00
package.json Add Playwright E2E tests for web app 2026-03-15 05:06:01 -07:00
playwright.config.ts Add Playwright E2E tests for web app 2026-03-15 05:06:01 -07:00
pnpm-workspace.yaml [hosting] Add Docker and docker-compose configuration for Coolify deployment 2026-03-14 14:48:19 -07:00
ralph.sh Add Ralph Wiggum loop for autonomous team-agent iterations 2026-03-14 19:35:35 -07:00
README.md Replace Supabase with PostgreSQL + Express in a single Docker container 2026-03-14 20:00:22 -07:00
schema.sql Unified proposal lifecycle: drafts, publish, trash, restore 2026-03-16 15:52:25 -07:00
tsconfig.json The whole PNM frontend from Oliver 2026-03-15 02:25:56 +01:00

Tender

A mobile-first vertical video platform for civic engagement. Record, share, and respond to short-form video tied to local issues, candidates, ballot measures, and community discussions.


Getting started

Prerequisites

  • Node 20+
  • Docker (for production builds), or
  • Expo CLI (npx expo) for native/local development

Install

git clone https://git.myceli.al/deiim/tender.git
cd tender
npm install

# Configure environment
cp .env.example .env
# Fill in values — set JWT_SECRET and DATABASE_URL

Run locally

npx expo start

The dev server is available at http://localhost:8081.

Production build (Docker)

docker build -t tender .
docker run -p 80:80 -e JWT_SECRET=your-secret tender

The container runs PostgreSQL, the Express API, and serves the web app — all on port 80.


Project structure

/
├── app/          # Expo Router pages and screens
├── src/          # Source code (components, hooks, lib, store, utils, types)
├── components/   # Shared UI components
├── constants/    # App constants (e.g. Colors)
├── assets/       # Images, fonts, splash screens
├── server/       # Express API server
├── docs/         # Docker and quickstart guides
└── schema.sql    # PostgreSQL database schema

Contributing

We use Linear for issue tracking and Cyrus (an AI agent) for development. See CONTRIBUTING.md for the full team workflow, including how to write issues, work with Cyrus, and review PRs.


Stack

Layer Technology
Frontend React Native / Expo 55 (expo-router, TypeScript)
Backend Express.js API server
Database PostgreSQL
Video expo-video, expo-camera
Auth JWT (bcryptjs + jsonwebtoken)
State Zustand + TanStack React Query
UI React Native Paper + Lucide icons
Hosting Single Docker container (PostgreSQL + Express)