Raleigh Challenge - Mountain Marathon
- raleighmountainmarathon.hk
- April 2023
- Full Stack, Website
Overview
This is a voluntary project
for Raleigh Hong Kong (RHK), a registered charity committed to inspiring Hong Kong youth to explore their full potential through participation in programmes held locally and internationally.
I have developed a Website
and a Registration System
for the upcoming event of RHK, Raleigh Challenge - Mountain Marathon, a charitable orienteering competition which is making a comeback in 2023 after its last iteration in 2013.
Role
I am the sole developer
for this project. I am responsible for both frontend and backend. In addition to my responsibilities as the developer for this project, I actively contribute to the UI design process.
Website
The website is built with SvelteKit
, integrated with Sanity
, a headless CMS, for dynamic content management. The website is built using Static Site Generation (SSG) and deployed to Vercel
, taking advantage of the fast loading speed and better SEO performance that static site provides.
To style the website efficiently, I used Tailwind CSS
for the user interface, which enable me to create adaptive user interfaces with ease.
Registration System
The registration system is comprised of two parts: the user-facing registration page and the admin dashboard. Both components are integrated with Prisma
, a TypeScript ORM that connects the frontend with the MongoDB
database. The type-safety provided by Prisma
improves the development experience and makes the application less error-prone.
User will be receiving automatic emails from the organizer during the registration process, this is made possible by Resend
, an email API.
Registration Page
The registration page is built using SvelteKit
and features a registration form that is powered by the Superforms
, a SvelteKit library. To ensure data integrity, the form is integrated with Zod
, a validation library that helps to validate the user inputs.
Admin Dashboard
The admin dashboard is built with Next.js
. The user interface is built with shadcn/ui
, which is a collection of re-usable components built using Radix UI and Tailwind CSS. I used NextAuth
to implement passwordless authentication with Magic Links. Nivo
is used to create simple data visualization in the dashboard.