Navigation
HomeAboutProjects
Language
HomeAboutProjects






Personal Portfolio

December 2024

This site! Portfolio website built with Next.js and Strapi CMS.

Tailwind CSSTypeScriptNext.jsReactGitStrapi CMSPostgres

MovieBrowser

December 2024

A fullstack IMDB clone with reviews and watchlist functionality. Supports genre and rating filters, as well as sorting by title, rating, or release date. Built with Vite + React Typescript on the frontend, and Express GraphQL + MongoDB on the backend.

MongoDBGraphQLViteApolloExpressGitshadcn/uiReactTypeScriptVitest

My Role

I took on the role of project leader, distributing GitHub issues to the other two team members. I was responsible for handling the filter system on the frontend, and setting up the custom GraphQL resolvers on the backend. A lot of time went into optimizing caching, and making the site responsive and accessible in accordance with Lighthouse standards. I also wrote the Python script for preprocessing and seeding the our database from an existing movie dataset. Documentation was handled by me, as well as setting up our frontend with Apache2 and running our Express server and MongoDB database on the machine.

Key Learnings

  • Experience using Cypress for E2E testing
  • Experience setting up a frontend bundle with Apache2
  • Experience configuring a MongoDB database on a remote machine
  • Experience writing custom GraphQL resolvers with Apollo Server
  • Deepened understanding of using React with Vite
  • Deepened understanding of unit tests with Vitest

Temporas

October 2024

A fullstack time tracker app for managing work sessions on projects. Built with a Flutter BLoC architecture on the frontend, with a serverless AWS Amplify backend. Shipped multi-platform for desktop and mobile.

FlutterDynamoDBAWSDartAppSyncCognitoGit

My Role

In a smaller team of four, I have been the primary driving force for setting up the BLoC architecture for state management in our frontend code structure. I set up web socket connections with a subscription based event loop listening for changes in our stack of AWS services. I was also involved when designing the database schema to set up with Amplify. In addition to my 40000 lines code contributions, I have been responsible for setting up a CI/CD pipeline to generate releases with GitHub Actions.

Key Learnings

  • Experience working with AWS services (IAM, Cognito, AppSync, DynamoDB)
  • Experience learning the Dart language with BLoC architecture principles
  • Familiarity with the Flutter widget ecosystem
  • Deepened understanding setting up CI/CD for Flutter binaries

Icebreaker

March 2024

A fullstack web application made for social groups looking to "break the ice" - create, share and play games together, all in one place. Built with React, Java and MySQL in an agile team environment using Scrum.

JavaSpringJavaScriptHTMLCSSReactTypeScriptMySQLGitScrum

My Role

My primary responsibility was to handle the entirety of the backend for our project. I built our REST API with Java Spring Boot, and tested the functionality of the API in a custom test suite built with vanilla HTML/JS. I was also responsible for writing all documentation related to the backend, including ER-diagram designs for our MySQL database schema, usage guides for testing, and the official API documentation.

I was very involved in the project leadership, being responsible for distributing tasks to the other six team members in the form of GitLab issues. Since I was overseeing the API, I had to communicate with the frontend team on how to set up some of the frontend React code as well, which made it natural for me to write these issues. I was tasked with administrating the GitLab repository as a whole, which included setting up the contributing guide for the other team members, and managing the CI/CD pipeline for running unit tests with JUnit.

Key Learnings

  • Deepened understanding of Java Spring Boot
  • Learned competence in MySQL database integration with a REST API
  • Acquired project leadership experience in an interdisciplinary team
  • Experience with Scrum practices in an agile team environment

ByteChat

November 2023

A fullstack desktop chat app for IT students looking to chat with other IT students. Supports group chats, and customizability in the form of nicknames and custom color schemes. Frontend built with JavaFX, backend REST API built with Java Spring Boot.

SpringJavaJavaFXJUnit

My Role

As the project leader of the team of four, I took on many responsibilities. In our meetings, I was the one writing GitLab issues and distributing to other team members. I was responsible for designing and implementing the shared core classes for both the front- and backend. The REST API endpoints were mostly coded by me, with some pair programming with other team members. The frontend styling was fully implemented by me. All documentation, including the API reference was written by me. I also wrote unit tests for the core classes.

Key Learnings

  • Experience setting up a Spring Boot REST API
  • Experience using JWT token for user authentication
  • Experience using JaCoCo, Checkstyles and SpotBugs to ensure proper code quality
  • Experience creating extensive class- and sequence diagrams
  • Experience writing automated E2E tests with FxRobot
  • Deepened understanding of using mocking for unit tests

IdiotCardGame

April 2023

A desktop application implementation of the card game "Idiot" with an integrated replay system. Play against an AI that tries to respond with optimal moves. Built with JavaFX and shipped for Windows, macOS and Linux.

JavaJUnitJavaFXMavenGit

Key Learnings

  • Deepened understanding of error handling in Java
  • Experience implementing object oriented principles on game logic
  • Experience setting up a CI/CD pipeline for making binaries