Use the Left and Right arrow keys, or swipe, to move between sections.

SkillSwap

SkillSwap helps neighbours find each other. If you need a hand with something, it shows you people nearby who have that skill and lets you chat with them.

Role
Backend and DevOps engineer in a team of five
Built
Winter 2024, one university term
Tools
Java, Spring Boot, Next.js, MySQL, Redis, Docker, GitLab CI
Status
Code public

The problem

People often need help with something small, like fixing a bike or learning a recipe. Someone living a few streets away may have exactly that skill. The two people never find each other, because there is no simple way to search your own neighbourhood by skill.

SkillSwap fixes that. You sign up with your postal code and your skills. You then search for a skill within a distance you pick, message the person you find, and leave a review afterwards.

How it works

User browserNext.js appSpring APIOpenStreetMapMySQLUpstash RedisPusher12345
  1. A person opens the search, picks a skill and how far away helpers can be.
  2. The web app sends that search to the Spring API.
  3. The API turns the searcher's postal code into map coordinates.
  4. It loads the saved coordinates of other users and keeps those within range who have the skill.
  5. The list of nearby helpers goes back to the web app and shows on screen.

Decisions

  • Chose chat stored in Redis, with Pusher sending new messages live over chat stored in MySQL through the Spring API

    Chat means many small reads and writes. Keeping each conversation as a time ordered list in Redis made sending and loading messages fast.

  • Chose looking up each user's coordinates once, when they sign up over looking up every user's location on each search

    The free map service limits how often you can call it. One lookup per user avoids those limits and keeps searches fast.

  • Chose a GitLab CI pipeline that builds Docker images and deploys them over deploying by hand

    With five people merging code, every change to main shipped the same way. Nobody deployed from their own laptop.

By the numbers

Automated pipeline stages, from tests to deploy
5

Where it is now

SkillSwap was built for a university course and was finished at the end of the term. The server it ran on is gone, so there is no live version, but the code is public.

The hardest part was images in chat. The chat could only carry text, and sending pictures was a requirement. I turned each image into bytes and put an "image:" marker in front. When the chat saw that marker, it turned the bytes back into a picture.

Code on GitHub