Welcome to the Fall Stack event's GitHub repository. Here you'll find everything you need to contribute with your amazing code and ideas!
This is a Núcleo de Estudantes de Informática project, made by students from ISEP.
Fall Stack is a tech event that happens every year with the intention of presenting tech companies to students that are looking for an internship.
This is also a great place for networking and really getting to know the market.
The event takes place at ISEP (Instituto Superior de Engenharia do Porto). Each year's edition is tracked as a <year>-edition git tag on this repo — see CHANGELOG.md for the current edition's dates and what changed.
Next.js, TypeScript, Tailwind CSS, HeroUI, PostgreSQL/Prisma, MinIO and
ZITADEL/AuthNEI. See AGENTS.md for architecture and
docs/SHARED_DATA.md for deployment.
Institutional OIDC handles login and password recovery. The application keeps
its own signed session and User rows. PostgreSQL and MinIO do not provide
login sessions. Delete accounts through the admin backoffice to preserve app
relationships and permissions.
git clone https://github.com/<org>/fallstack-website.git
cd fallstack-websitepnpm installCopy:
cp .env.example .envSet DATABASE_URL for the runtime PostgreSQL identity and DIRECT_URL for the
migration identity. Both require the environment's ?schema=fallstack on
shared services. Set S3_ENDPOINT, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY,
S3_BUCKET_AVATARS, S3_BUCKET_LOGOS, S3_BUCKET_CVS, and the AuthNEI/ZITADEL and JWT values
listed in .env.example. NEXT_PUBLIC_BASE_URL defaults to
http://localhost:3000/api during local development. For local storage, use
an isolated MinIO instance and the same bucket names or environment-specific
local equivalents. Never use production credentials locally.
Production logging and error monitoring use Pino and Sentry. See docs/OBSERVABILITY.md for Sentry project creation, environment variables, privacy controls, Docker source-map uploads, alerts, verification, and troubleshooting.
Run staging load checks only with CONFIRM_NON_PRODUCTION=yes. Uploads now pass
through authenticated application routes, with per-student rate limits and
server-side size, MIME and file-signature checks. See
tests/e2e/README.md for browser checks. Remove
staging upload objects created during verification.
Avatars and logos uploaded by admins are public through same-origin
/api/media/avatar/<id> and /api/media/logo/<id>. CVs remain private; download routes recheck the
student/company/admin policy on every request. S3 credentials stay server-side.
Legacy supabase/ SQL and bucket policies belong only to
pre-cutover source stacks and must not be copied into shared PostgreSQL or
MinIO. Source production has a Supabase-specific orphan GC job; S3-aware
cleanup is a separate reviewed migration step. Scheduled backups of the shared
services must be configured and restore-tested independently of one-time
migration archives.
Schema changes are tracked with Prisma Migrate (prisma/migrations/), not db push. See docs/database-workflow.md for creating and applying migrations, the one-time baseline-adoption note, resetting a local database, seeding, and wiping the database.
Start the Next.js dev server:
pnpm devApp runs on:
http://localhost:3000
Run PostgreSQL and MinIO locally or connect to dedicated development services.
Create the three environment buckets and use scoped credentials. The deployed
Coolify Compose file is docker-compose.app.yml
and expects the shared external network; it is not a local database service
Compose file. See docs/SHARED_DATA.md.
See AGENTS.md's Contribution workflow section for branch naming (Conventional Branch), commit style (Conventional Commits), and the PR-into-dev process. Task tracking lives on the repository's GitHub Projects board.