Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
c67a39a
fix(?): Fixed a typo in "/join" ( Fixes #29)
OmgRod Apr 19, 2025
0f482be
ci(dash/src): :construction_worker: Update base image to node:22-alpi…
Nudelsuppe42 Apr 20, 2025
eee07a9
fix(dash/src): :construction_worker: Enable corepack for yarn 4
Nudelsuppe42 Apr 20, 2025
3ed419e
fix(frontend/gallery): :bug: Working blurDataURL / hashes of images o…
Nudelsuppe42 Apr 20, 2025
7517103
fix(dash/src): :bug: Set remotePatterns for remote images
Nudelsuppe42 Apr 20, 2025
cb91a26
feat(dash/me): :sparkles: Add pagination and search to application list
Nudelsuppe42 Apr 20, 2025
731907c
refactor(dash/src): :truck: Rename BuildTeam to Build Region
Nudelsuppe42 Apr 20, 2025
4dceabc
feat(dash/me): :sparkles: Add more info to participating build region…
Nudelsuppe42 Apr 20, 2025
8021f60
feat(dash/me): :sparkles: Edit own user settings, add keycloak admin …
Nudelsuppe42 Apr 20, 2025
7d615dd
ci(dash/src): :memo: Update env, example env and readme
Nudelsuppe42 Apr 20, 2025
fe6da77
feat(dash/me): :sparkles: Add loading state to application route
Nudelsuppe42 Apr 23, 2025
edae1d3
feat(dash/src): :pencil2: Move around staff nav links, add scrollable…
Nudelsuppe42 Apr 23, 2025
407966f
fix(dash/admin): :bug: Add key to fragment of mapped user permissions
Nudelsuppe42 Apr 23, 2025
791dfa6
refactor(dash/src): :truck: Move pages into page group for pages with…
Nudelsuppe42 May 4, 2025
b1a5e73
feat(dash/src): :sparkles: Add view transitions
Nudelsuppe42 May 4, 2025
a86ca8c
feat(dash/editor): :construction: First layout of claim editor on mybte
Nudelsuppe42 May 29, 2025
b0753aa
feat(claimEditor): :sparkles: Move constructClaimGeoJSONQuery to a se…
Nudelsuppe42 May 31, 2025
8080835
feat(dash/editor): :sparkles: Direct link to selected claim on editor…
Nudelsuppe42 Jun 10, 2025
ed01390
feat(dash/editor): :construction: WIP: Add advanced claim editor
Nudelsuppe42 Jun 11, 2025
4586ef3
fix(dash/editor): :bug: Assign new UUID to claims on create instead o…
Nudelsuppe42 Jun 11, 2025
867f7ed
feat(dash/editor): :sparkles: Advanced editor, only missing: image up…
Nudelsuppe42 Jun 11, 2025
5317769
fix(dash/editor): :ambulance: Include user verification in advanced e…
Nudelsuppe42 Jun 11, 2025
b41e14c
ci(dash/src): :heavy_plus_sign: Add mapboxgl types for build process
Nudelsuppe42 Jun 12, 2025
0c51574
ci(dash/src): :green_heart: Add openssl
Nudelsuppe42 Jun 12, 2025
99e4eae
feat(dash/src): :mag: Add meta tags to all routes
Nudelsuppe42 Jun 12, 2025
f46b52c
ci(dash/src): :green_heart: Use openssl instead of openssl-compat
Nudelsuppe42 Jun 12, 2025
6dac960
ci(dash/src): :green_heart: Try to fix prisma client erros because wr…
Nudelsuppe42 Jun 13, 2025
a38fdc5
ci(dash/src): :green_heart: Try different openssl version
Nudelsuppe42 Jun 13, 2025
f820aeb
ci(dash/src): :green_heart: Try node slim instead of alpine
Nudelsuppe42 Jun 13, 2025
cb7a795
ci(dash/src): :green_heart: Try symlink...
Nudelsuppe42 Jun 13, 2025
245008d
fix(dash/src): :green_heart: remove duplicated symlink
Nudelsuppe42 Jun 13, 2025
cd6d396
feat(db): :arrow_up: Update to prisma v6
Nudelsuppe42 Jun 13, 2025
376b6f8
ci(dash/src): :green_heart: Try to revert binary targets
Nudelsuppe42 Jun 13, 2025
c023aaa
ci(dash/src): :green_heart: Add DATABASE_URL to Build contect and log…
Nudelsuppe42 Jun 14, 2025
1e33f31
fix(dash/src): :mag: Add metadataBase for og images
Nudelsuppe42 Jun 14, 2025
5a75a2a
feat(dash/admin): :sparkles: Add link to application list for users
Nudelsuppe42 Jun 27, 2025
fbc4ea3
fix(dash/src): :bug: Use og image from cdn
Nudelsuppe42 Jun 27, 2025
cd75fd3
fix(dash/src): :bug: Add theme color to metadata [skip ci]
Nudelsuppe42 Jun 27, 2025
ef1b1f3
fix(dash/src): :bug: remove themecolor from metadata and change viewp…
Nudelsuppe42 Jun 27, 2025
bbb1704
chore(dash/src): :arrow_up: Update to mantine v8; fix avatar in header
Nudelsuppe42 Jun 27, 2025
caa9f60
feat(dash/responsive): :iphone: Responsive Header and Nav link drawer
Nudelsuppe42 Jun 27, 2025
605eaf0
perf(dash/responsive): :zap: Remove unstable view transitions
Nudelsuppe42 Jun 27, 2025
4a7c29f
feat(dash/responsive): :iphone: Make all pages mobile-ready
Nudelsuppe42 Jun 27, 2025
8b76ffe
fix(dash/src): :bug: Fix types...
Nudelsuppe42 Jun 27, 2025
473e8cf
chore(dash/src): :art: Prettier
Nudelsuppe42 Jun 27, 2025
7b7051d
chore(api/src): :art: Prettier & Force rebuild
Nudelsuppe42 Jun 30, 2025
4579725
ci(mono): :construction_worker: Use node 22 for api
Nudelsuppe42 Jun 30, 2025
7521a51
ci(mono): :hammer: Force build on gh
Nudelsuppe42 Jun 30, 2025
4c6d2b9
ci(mono): :green_heart: Fix api ci
Nudelsuppe42 Jun 30, 2025
0cbd319
fix(mono): :green_heart: Fix ci....
Nudelsuppe42 Jun 30, 2025
e5307f6
chore(api/Dockerfile): Enable corepack and prepare Yarn 4.9.1
Nudelsuppe42 Jun 30, 2025
e0e52fc
fix(frontend/src): exclude sitemap routes from auth middleware to all…
Copilot Jul 20, 2025
e7df088
chore(ci): Update node version to 22
Nudelsuppe42 Jul 20, 2025
808d907
fix(frontend/Dockerfile): enable corepack before installing dependencies
Nudelsuppe42 Jul 25, 2025
646e083
feat(dash/admin): :sparkles: Add copy id to pages / objects
Nudelsuppe42 Jul 30, 2025
33ff600
feat(dash/admin): :sparkles: add admin remove from team functionality…
Nudelsuppe42 Aug 6, 2025
d760b22
fix(dash/src): :bug: Keep url state on initial render, update mantine
Nudelsuppe42 Aug 6, 2025
6d34650
fix(auth): Refresh tokens now actually work OH MY FUCKING GOD HOW CAN…
Nudelsuppe42 Oct 20, 2025
a8244f4
fix(auth): New bug found
Nudelsuppe42 Oct 21, 2025
1ca7205
feat(dash/team): :sparkles: Team info editor, team nav links
Nudelsuppe42 Nov 13, 2025
1175ab1
fix(dash/team): :passport_control: Update edit permissions to use sha…
Nudelsuppe42 Nov 19, 2025
4c2737b
fix(dash/user): :bug: Update user data fetching to use correct email …
Nudelsuppe42 Nov 20, 2025
41044af
feat(dash/team): :sparkles: Member list, remove members with notify
Nudelsuppe42 Nov 21, 2025
473db72
feat(dash/team): :sparkles: Add members to BT
Nudelsuppe42 Nov 21, 2025
d8950fe
feat(dash/team): :sparkles: Add notifications
Nudelsuppe42 Nov 21, 2025
26ac565
feat(dash/team): :sparkles: Display user permissions and creator role…
Nudelsuppe42 Nov 21, 2025
380d7bb
fix(dash/src): :rotating_light: Update next minor to fix CVE-2025-66478
Nudelsuppe42 Dec 6, 2025
abc91f6
chore(dash/src): :memo: Rename Build Region to Build Team
Nudelsuppe42 Dec 6, 2025
65912d9
fix(dash/src): :passport_control: Finally fix authentication with ref…
Nudelsuppe42 Jan 12, 2026
64a4e85
fix(frontend/auth): :passport_control: Finally fix refresh token bug.
Nudelsuppe42 Jan 12, 2026
53c60ed
chore(mono): remove unused file (#77)
SidneyNemzer Jan 22, 2026
916e8e6
fix(dash/admin): :bug: Make resource optional for keycloak event list…
Nudelsuppe42 Jan 27, 2026
62dcff2
feat(frontend/conf): Add raw githubcontent url to allowed image patterns
Nudelsuppe42 Jan 28, 2026
e395116
feat(user): Add admin functionality to invalidate user sessions and u…
Nudelsuppe42 Feb 21, 2026
534fced
feat(auth): implement back-channel logout and session invalidation lo…
Nudelsuppe42 Mar 13, 2026
4272439
feat(dash/src): :sparkles: Add buildteam selector to header
Nudelsuppe42 Mar 13, 2026
e9c981b
fix(dash/src): :zap: Include route switching for buildteams
Nudelsuppe42 Mar 13, 2026
76fa712
fix(dash/src): :ambulance: pin RTE dependencies so newline at the end…
Nudelsuppe42 Mar 13, 2026
a3ca5ea
fix(dash/src): :bug: Convert wrong import to absolute import
Nudelsuppe42 Mar 14, 2026
620db8b
build(deps-dev): bump husky from 9.1.5 to 9.1.7 (#34)
dependabot[bot] Mar 14, 2026
8678d28
feat(dash/src): :sparkles: Add ErrorDisplay component to SigninPage f…
Nudelsuppe42 Mar 14, 2026
c84d728
fix(api/core): :ambulance: Only run middleware of method for the actu…
Nudelsuppe42 Mar 15, 2026
bb47377
fix(api/claims): :bug: Return error if happens...
Nudelsuppe42 Mar 15, 2026
84b50a3
feat(dash/admin): ✨ Implement missing user admin controls, closes #44
Nudelsuppe42 Mar 15, 2026
a607671
feat(dash/team): :construction: Team Applications (WIP)
Nudelsuppe42 Apr 2, 2026
ffb6376
feat(applications): ✨ Add application response templates and review f…
Nudelsuppe42 Apr 3, 2026
f217d51
feat(apply): ✨ Implement application flow, closes #39
Nudelsuppe42 Apr 9, 2026
f4101db
fix(api/claims): :ambulance: Add more logging, retries (TEMP)
Nudelsuppe42 Apr 18, 2026
ee6f58e
fix(api/claims): Even more logging
Nudelsuppe42 Apr 18, 2026
9f3a870
chore(api/claims): :zap: Switch to overpass-api
Nudelsuppe42 Apr 19, 2026
8050483
fix(api/src): :ambulance: Try to fix keycloak DNS issue
Nudelsuppe42 Apr 22, 2026
7026e9a
fix(api/controllers): :ambulance: Log error on Overpass request failu…
Nudelsuppe42 Apr 22, 2026
aebf3fa
fix(docs): Update README formatting and fix image URL
Nudelsuppe42 Apr 22, 2026
1cfeb0d
feat(dash/team): :sparkles: Change token revalidate message, add some…
Nudelsuppe42 Apr 22, 2026
fef41a9
feat(dash/team): :sparkles: Edit team socials
Nudelsuppe42 Apr 22, 2026
c10023a
fix(dash/src): :bug: Switch to link as key of navlinks
Nudelsuppe42 Apr 22, 2026
9835c1f
feat(dash/admin): :sparkles: Approve showcase images
Nudelsuppe42 Apr 22, 2026
1e02847
feat(deps): add tiptap-markdown dependency
Nudelsuppe42 Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions .github/workflows/api.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,12 @@ jobs:
outputs:
has_changes: ${{ steps.check_for_changes.outputs.has_changes }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 3
- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: '22.14.0'
node-version: 22
- name: Install turbo
run: npm install -g turbo@2.4.4 && npm install -g turbo-ignore
- name: Check for changes
Expand All @@ -29,6 +29,9 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 3
- uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install turbo
run: npm install -g turbo@2.4.4
- name: Login to Docker
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/dashboard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ jobs:
echo NEXT_PUBLIC_API_URL="https://api.buildtheearth.net/api/v1" >> apps/dashboard/.env
echo NEXT_PUBLIC_SMYLER_API_URL="https://smybteapi.buildtheearth.net" >> apps/dashboard/.env
echo NEXT_PUBLIC_FRONTEND_URL="https://buildtheearth.net" >> apps/dashboard/.env
# echo DATABASE_URL="${{ secrets.DATABASE_URL }}" >> apps/dashboard/.env
- name: Build the Docker image
run: docker build . --file apps/dashboard/Dockerfile --tag ghcr.io/buildtheearth/dashboard-website:$(git rev-parse --short HEAD) --tag ghcr.io/buildtheearth/dashboard-website:latest
- name: Docker push tag
Expand Down
10 changes: 9 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@
"frontend/seo",
"api/applications",
"api/claims",
"frontend/legal"
"frontend/legal",
"frontend/gallery",
"dash/editor",
"db",
"dash/responsive",
"dash/team"
],
"githubPullRequests.ignoredPullRequestBranches": [
"main"
]
}
29 changes: 17 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!-- markdownlint-disable -->
<div align="center">

<img width="128" src="https://github.com/BuildTheEarth/assets/blob/main/images/logos/logo_archive_2.png?raw=true" />
<img width="128" src="https://github.com/BuildTheEarth/assets/blob/main/logos/logo_archive_2.png?raw=true" />

# @BuildTheEarth/web

Expand Down Expand Up @@ -29,23 +29,24 @@ This repository contains the following apps and other shared packages:

## Table of Contents

+ [@BuildTheEarth/web](#buildtheearthweb)
+ [Apps and Packages](#apps-and-packages)
+ [Table of Contents](#table-of-contents)
+ [Getting Started](#getting-started)
+ [Bugs and Features](#bugs-and-features)
+ [Building](#building)
+ [Building all applications](#building-all-applications)
+ [Building a single application](#building-a-single-application)
+ [CI/CD](#cicd)
- [@BuildTheEarth/web](#buildtheearthweb)
- [Apps and Packages](#apps-and-packages)
- [Table of Contents](#table-of-contents)
- [Getting Started](#getting-started)
- [Bugs and Features](#bugs-and-features)
- [Building](#building)
- [Building all applications](#building-all-applications)
- [Building a single application](#building-a-single-application)
- [CI/CD](#cicd)

## Getting Started

First, clone this repository:

```bash
git clone https://github.com/BuildTheEarth/web.git
git clone https://github.com/BuildTheEarth/web.git
```

It is recommended to install [Turborepo](https://turbo.build/repo/docs) globally:

```bash
Expand All @@ -59,6 +60,7 @@ yarn install
# and optionally
yarn db:generate
```

Now, copy the example `.env` file and change all its options:

```bash
Expand All @@ -70,9 +72,11 @@ Then you can start the development server with:
```bash
yarn dev
```

This will also start the Prisma Studio.

## Bugs and Features

We use [GitHub Issues](https://github.com/BuildTheEarth/website-frontend/issues) to manage all bugs and features. You can submit a new bug or feature request [here](https://github.com/BuildTheEarth/website-frontend/issues/new). An overview of the state of bugs and features can be found [here](https://github.com/orgs/BuildTheEarth/projects/11).

## Building
Expand All @@ -92,6 +96,7 @@ yarn clean
```bash
yarn build
```

Due to the use of Turborepo, this command will only build applications that have changed since the last build!

### Building a single application
Expand All @@ -112,4 +117,4 @@ turbo build --filter=[...]

## CI/CD

This monorepo uses [GitHub Actions](https://github.com/BuildTheEarth/web/actions) to create deployable Docker images, which are pushed to the [GitHub Container Registry](https://github.com/orgs/BuildTheEarth/packages).
This monorepo uses [GitHub Actions](https://github.com/BuildTheEarth/web/actions) to create deployable Docker images, which are pushed to the [GitHub Container Registry](https://github.com/orgs/BuildTheEarth/packages).
5 changes: 4 additions & 1 deletion apps/api/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM node:21-alpine AS base
FROM node:22-alpine AS base

FROM base AS builder
RUN apk update
Expand All @@ -18,6 +18,9 @@ WORKDIR /app

# Install dependencies
COPY --from=builder /app/out/json/ .
# Enable corepack to use the correct Yarn version
RUN corepack enable
RUN corepack prepare yarn@4.9.1 --activate
RUN yarn install

# Build the project
Expand Down
21 changes: 15 additions & 6 deletions apps/api/src/controllers/BuildTeamController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,19 @@ class BuildTeamController {
this.core = core;
}

private async getKeycloakMemberSafe(ssoId: string) {
try {
return await this.core.getKeycloakAdmin().getKeycloakAdminClient().users.findOne({
id: ssoId,
});
} catch (error) {
this.core
.getLogger()
.warn(`Failed to fetch Keycloak user ${ssoId}: ${error instanceof Error ? error.message : error}`);
return null;
}
}

/**
* Get Information about multiple Buildteams, may paginate
*/
Expand Down Expand Up @@ -453,9 +466,7 @@ class BuildTeamController {
// Get Keycloak information about all members present and mutate the object
const kcMembers = await Promise.all(
members.map(async (member) => {
const kcMember = await this.core.getKeycloakAdmin().getKeycloakAdminClient().users.findOne({
id: member.ssoId,
});
const kcMember = await this.getKeycloakMemberSafe(member.ssoId);
return {
id: member.id,
ssoId: member.ssoId,
Expand Down Expand Up @@ -525,9 +536,7 @@ class BuildTeamController {
// Mutate users with information from keycloak
const kcMembers = await Promise.all(
members.map(async (member) => {
const kcMember = await this.core.getKeycloakAdmin().getKeycloakAdminClient().users.findOne({
id: member.ssoId,
});
const kcMember = await this.getKeycloakMemberSafe(member.ssoId);
return {
id: member.id,
ssoId: member.ssoId,
Expand Down
Loading
Loading