Skip to content
LDSSAPublic

About

LDSA website

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

LDSA Website

The official website of the Lisbon Data Science Academy. It is a static Astro site designed for Cloudflare Pages and maintained through the feature/* → dev → main workflow.

The hosting and delivery architecture uses free tooling and service tiers. Domain registration and renewal are the only expected website infrastructure cost.

  • Production: https://www.lisbondatascience.org/ (kept on Unbounce until the migration acceptance tests pass)
  • Candidate production: https://ldsa-website.pages.dev/
  • Integration preview: https://dev.ldsa-website.pages.dev/

Local development

Use Node.js 24 or newer:

npm ci
npm run dev

The local server prints its URL, normally http://localhost:4321/.

Before opening a pull request, run:

npm run check
npm run format:check

npm run check type-checks the Astro source, builds the production site, validates internal links and local assets, rejects Unbounce dependencies, verifies the three preserved Flodesk endpoints, and confirms Cloudflare deployment files and the sitemap are present. After each Cloudflare deployment, GitHub Actions also checks the live routes, redirects, 404 page, security and indexing headers, sitemap, and deployed commit identity.

Branches and deployment

  • feature/*: one focused change; open a pull request into dev.
  • dev: integration branch and protected Cloudflare preview.
  • main: production branch. Merging here publishes the production build.

Pull requests into dev or main run formatting, type checks, a clean production build, site contract checks and Lighthouse audits. Feature branches never deploy to Cloudflare. A push to dev deploys the private development preview, while a push to main deploys production through the Cloudflare Wrangler GitHub Action.

The deployment workflow requires:

  • GitHub secret CLOUDFLARE_API_TOKEN, scoped to edit Cloudflare Pages.
  • GitHub secret CLOUDFLARE_ACCOUNT_ID.
  • Optional GitHub variable CLOUDFLARE_PAGES_PROJECT; it defaults to ldsa-website.
  • Production-environment variable CLOUDFLARE_WEB_ANALYTICS_TOKEN after the final public hostname is registered in Cloudflare Web Analytics. Preview builds deliberately omit it.

See the Cloudflare runbook for project creation, preview access, analytics and domain cutover.

Repository structure

src/
├── components/       shared navigation, footer, FAQ and Flodesk forms
├── data/             navigation, links and migrated content data
├── layouts/          metadata and global page shell
├── pages/            public routes
└── styles/           design system and responsive styles
public/               assets and Cloudflare Pages configuration
scripts/              build-time contract checks
migration/
├── raw/              public rendered-source snapshot from Unbounce
├── scripts/          migration audit helpers
└── *.md              public-evidence audit, inventories and decisions
docs/operations/      deployment, DNS, QA and maintenance runbooks
.github/workflows/    CI and deployment automation

Updating content

Most page copy lives in src/pages. Shared links, FAQs and the preserved volunteer roster live in src/data/site.ts. Keep time-sensitive dates in the LDSA wiki where possible and link to that source of truth instead of duplicating values that will become stale.

Images in public/images are locally hosted copies of LDSA assets recovered from the public Unbounce site. Add descriptive alt text for meaningful images and use an empty alt only for decorative images.

Flodesk forms

src/components/FlodeskForm.astro preserves the three production Flodesk form IDs and submission endpoints:

  • General interest: 63f9e4e2f0116a4cabfef7db
  • Starters Academy: 615c9641c71e8685f183bd18
  • Prep Course: 6172e62fe625581864e3f857

The homepage also preserves the option1 and option2 interest values used by the current form. Do not replace these IDs or option values without updating the form in Flodesk and completing the end-to-end tests in the QA runbook.

DNS and production safety

The selected cutover keeps authoritative DNS at Namecheap: www will become a CNAME to Pages and the apex will use Namecheap's permanent URL redirect to www. Email-related MX and TXT records remain untouched. The captured baseline, exact cutover and rollback sequence are in the DNS runbook.

Contributing

Create a branch from dev, make a focused change, run the local checks, then open a pull request into dev. After the combined changes pass on the protected Cloudflare preview, open a pull request from dev into main.

About

LDSA website

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages