Wanbird IT

Car Enthusiast Hub

A community for car enthusiasts: a forum, news, events, a garage of members' cars and a place to buy and sell them. It started as a final-year project in 2023 and was rebuilt in 2026.

Years
2023, rebuilt in 2026
Kind
Community web app
Web
React 19, TypeScript
API
Laravel 13, MySQL
Home page, 2023 Home page, 2026

Drag the stroke to compare the two versions.

2023: a final-year project

Car Enthusiast Hub began in May 2023 as a final-year project: a forum, news, member profiles and the first screens for selling a car. It was black on white, with square corners and a thick black stripe on the forum cards.

The home page already had a place for upcoming events, but it was filled with placeholder text. Three years later that plan was still worth finishing.

2026: rebuilt, not replaced

The 2026 version was modernized and redesigned on the original character instead of starting again. The black, the white and the square corners stayed. One accent was added: a yellow taken from the stripe on the car in the sign-in photo.

Three rules hold the design together.

Yellow is only ever a fill.

Never the colour of text.

Square corners everywhere.

Tags, buttons, fields, pictures and colour swatches.

The stripe marks things that open.

It turns yellow under the pointer.
The sign-in page, with a photo of a grey car that has a yellow stripe on its bonnet
The sign-in page. The stripe on this car gave the site its yellow.

What members can do

Six parts, one account. Each picture is the real page.

  1. Forum

    Threads with tags and comments, searchable by text or by tag.

    The forum: a list of threads with tags
  2. News

    Articles by the editors, written in a rich-text editor with images.

    The news page: articles with cover pictures
  3. Events

    Meets, track days, shows, cruises and rallies. Members say they are going, and everyone sees how many are.

    The events page: upcoming events filtered by type
  4. Garage

    Members add their cars. Make and model come from the catalogue; gearbox, fuel, drivetrain and body are picked in one click; colours come from a colour picker; up to 10 photos.

    The form for adding a car to the garage
  5. Buy and sell

    A car from the garage goes up for sale with a price in its own currency. Buyers filter by make, model, year, price, mileage, fuel, gearbox and body, and the filters stay in the URL, so a search can be shared.

    The buy page: cars for sale with filters
  6. Control panel

    Admins manage the catalogue of makes and models, or import it from Excel. An import shows what it will add and which rows it skips before anything is saved.

    The control panel: an Excel import previewed before saving

Every page is photographed

Automated tests capture every page at desktop and phone widths, signed out and signed in. If a change alters how a page looks, the test fails and shows the difference. The pictures on this page are those reference images.

Behaviour is tested too: the API has its own tests and static analysis, the web app has unit tests, and there is one end-to-end test for each bug found in the 2023 version.

Home page on a phone Buy page on a phone A car for sale page on a phone Events page on a phone Forum page on a phone Add a car page on a phone Control panel page on a phone

Built with

Web
React 19, TypeScript, React Router 8, TanStack Query, Redux Toolkit, CKEditor 5
API
Laravel 13, PHP 8.4, Sanctum, MySQL, OpenAPI documentation
Quality
Pest, Larastan, Vitest, Playwright, ESLint, Prettier
Runs on
Docker Compose: the database, the API and the web app start with one command

Every commit since the first, in May 2023, is kept: 11 from 2023 in black, 25 from 2026 in yellow. The API and the web app were two repositories and now live in one, with both histories.

Have something like this to build?

Send a few lines about what you need. A rough description is enough to start.

Email wanbird0221@gmail.com See all work