Karsten van VoorenBeveren, BE
← Back to work

KSK Beveren Companion App

A fan app for KSK Beveren with live match data, news, the squad and a Man of the Match vote, powered by my own backend.

Role
UX/UI design & full-stack development (solo)
Year
2026
Team
Solo
Type
School project, Expert Class Coding (AP Hogeschool)
Tools
Figma, VS Code, Claude (AI assistant), React Native / Expo, Node.js / Express, MongoDB (Mongoose), Render
Two phones showing the KSK Beveren app: the home screen with upcoming matches and the login screen

Challenge

Design and build a working mobile app with its own backend, from scratch. The brief was completely open.

Solution

A companion app for the supporters of my local club, KSK Beveren. Every screen pulls its data from my own API and database.

Result

A fully working app with a live backend.

Context

The Expert Class Coding brief was simple: build an app with a real backend. There was no client and no fixed topic, so I picked something I know well: KSK Beveren.

The target audience is the club's supporters, who want match info, news and the squad together in one place.

Process

I started with desk research and a user flow, then went from low-fidelity wireframes to high-fidelity designs in Figma before building anything.

  • First paper sketches of the app screens

    Sketches

Final design

Matches screen with fixtures, results and the league table

01

Live match data

Fixtures, results and standings, all loaded from the database through the API.

02

Man of the Match vote

After a match, logged-in fans vote for the best player and see the live results. Each user can vote once per match, which is enforced in the database.

03

News with comments

Club news articles where logged-in fans can leave comments.

04

Squad & player profiles

The full team, with a detail page per player.

Also included: Account registration & login, and a profile page.

KSK Beveren app mockup on two phones

Style guide

Colours

  • Blue

    #2743B2

    Primary

  • Yellow

    #F3D02D

    Accent

  • Text

    #111111

  • Surface

    #F5F7FB

Typography

HeadingsSyne
Headings
Body textInter
Body text

Components

Screen header
Floating tab bar
Match card
News card

Build

Frontend

  • React Native
  • Expo
  • React Navigation

Backend

  • Node.js
  • Express
  • MongoDB
  • Mongoose
  • Render

Auth

  • bcrypt
  • JWT

Architecture

  1. App (Expo)
  2. REST API (Express on Render)
  3. MongoDB
  • 12 screens, with a floating bottom tab bar and stack navigation per tab: Home, Matches, News and Team.
  • REST API with 7 resources: users, players, matches, news, comments, Man of the Match votes and standings.
  • Passwords are hashed with bcrypt; logging in returns a JWT.
  • Seed scripts fill the database with players, matches, news, standings, comments and votes.