Skip to content

The Trans Dimension is an online community hub connecting trans communities in the UK.

License

Notifications You must be signed in to change notification settings

geeksforsocialchange/the-trans-dimension

Repository files navigation

The Trans Dimension

A PlaceCal community site

Front-end for The Trans Dimension, an online community hub which will connect trans communities across the UK by collating news, events and services by and for trans people in one easy-to-reach place. A collaboration between Gendered Intelligence and Geeks for Social Change.

Funded by the Comic Relief Tech for Good “Build” fund. Read more about the project here.

Development

Prerequisites

Setup & install instructions

  • make sure you are using the correct node version with nvm use
  • install with npm install

Copy .env.example over into .env and edit as appropriate! This must be done before any of the following will work as it generates src/Constants.elm which is used in a number of places in the code.

Build

  • npm start to start a dev server on http://localhost:3030
  • npm run build generate a production build in dist/

Formatting

We recommend integrating [email protected] into your code editor, but if you don't...

  • Please run npm run format to format .elm files in src before committing code.

Testing

We're using elm-test-rs to run elm tests. It is required to run either npm start (quickest) or npm build at least once in the project before tests will work.

  • run tests with npm test

Code & configs

This site is built with elm-pages

What it's for

  • elm.json for elm packages used for site
  • elm-tooling.json for elm packages used for code
  • .env is used to generate src/Constants.elm for elm-pages
  • script/* contains CLI code generation scripts to generate boilerplate for new elm-pages routes
  • .nvmrc contains project node version
  • package.json for node scripts and packages
  • package-lock.json for current versions of node packages
  • public/* contains static files to be copied direct to build
  • app/* contains core files required by elm-pages. These are boilerplate altered for this project.
  • src/* contains custom files. These are authoured from scratch for this project.
    • src/Data/PlaceCal contains code for fetching, caching and decoding data from PlaceCal
    • src/Helpers/ contains utility code (e.g. for handling dates)
    • src/Theme/ contains view code like templates and shared styling
  • tests/* contains test files

Content & Pages

  • Routes in app/Route/ automatically generate route based on file name
  • New routes can be generated via CLI
    • e.g. create a new stateless route by running npx elm-pages run AddStaticStatelessRoute MyRouteName
  • Page templates are in src/Theme/Page/
  • About and Privacy pages are generated from markdown in content/
  • Copy is not from a datasource (e.g. UI or SEO text) is in src/Copy/Text.elm

Styling & layouts

Deployment

Deploys to Cloudflare Pages

  • code is tested and linted automatically before deploy
  • when a pull request is created, a preview site is deployed
  • when a pull request is merged into main, the production site is deployed

Development workflow

Adding issues

  • add effort & value labels (if you know enough about it)
  • put the issue in a milestone (if it is part of a current epic)

Working on issue

  • assign it to yourself before starting work
  • make a branch that includes the issue type (fix/feat/chore etc & number)
  • make sure you understand the acceptance criteria
  • don't forget to include tests if it's a new feature
  • ask questions & make plan

Code review & merge

  • check the acceptance criteria have been met (with tests if appropriate)
  • add comments & questions
  • once approved, leave for the author to merge

License

Source code is released under the Hippocratic License.

Graphic design by Studio Squid and © Gendered Intelligence 2022.

Illustrations © Harry Woodgate 2022.

Contributing

We welcome new contributors but strongly recommend you have a chat with us in Geeks for Social Change's Discord server and say hi before you do. We will be happy to onboard you properly before you get stuck in.

Donations

If you'd like to support development, please consider sending us a one-off or regular donation on Ko-fi.

ko-fi