Luna pfp

Developer • she/her • 24

Luna

Developer of many things.
Web Apps, Games & Addons, Discord Apps, A little bit of everything...


Emberkeeper

Emberkeeper is a game jam submission created within an estimated 2-3 days.It was created using Godot 4 and programmed in C#, all art was made by myself.The "story" of the game is as follows;
Santa is facing financial difficulties, and shuts off the heating to save on his bills.
The poor elves trying to make the presents are beginning to freeze and it's up to the Emberkeeper, the player, to keep the elves warm and shatter the ice around any frozen elves.
This was a fantastic learning experience, and because of this I know I'll be participating in more game jams.
I'm very happy with what I was able to create, and what I learned from the experience - and I can't wait to create something more, with higher quality, next time.

If I had more time to work on the game, and after the jam review I may work on it further, I would implement some more game features to keep the gameplay interesting.
Maybe some additional interactables, different fuel types, some sort of bonus for keeping Hearths out of zero?
I'd also add more stats to the score screen, to incentivise competition to different and/or higher scores.
Maybe stats like elves frozen, fuel used, distance travelled, etc.

UI / UX Design

Officially, I've never been a UI / UX Designer.Un-officially, however, I've gained enough self-taught knowledge to be able to create basic enough designs to help with the creation of new features.Because I have no official training, I try to follow best practises that are easily learnable from online.These being things such as:

  • Focus on what the User needs/wants.

  • Users shouldn't have to "think".

  • UI/UX should be accessible to all.

  • Maintain consistency/familiarity.


Mobilleo


Booking Authorisations

During the development of the Booking Authorisations feature for Mobilleo, we understand what was needed in terms of functionality but no one knew how it should look.
Going just on what functionality was required, I created the following design.

This design allowed for easy toggle of Booking Auths for the selected organisations (the menu was accessed via an organisation's profile, so it was always their booking auth settings) as well as the ability to adjust the "rules" of each booking/content type.For Example, Booking Authorisations could be enabled globally but disabled for trains, or Flights could only require Booking Authorisation if the cost was above a certain threshold.

New SDC

SDC was the internal dashboard used by our staff to manage customer bookings/requests, manage finances and make bookings on behalf of customers.We were creating a new interface for them using a new framework, and I took the opportunity to sit down with staff and understand what was required and what they liked/disliked of our original UI.The result was essentially a search bar. The first starting point of almost any action was the need to search for a user (name, email), a booking/request reference, or an organisation.

The next most common action was making bookings on behalf of customers. on SDC there are two ways to make bookings, Automated or Manual.Automated Booking uses the same flow as what would be present to our end users, albeit with some additional fields such as "Traveller" and "Requester", and some additional SDC only booking options at checkout.Manual Booking, however, was essentially just an data/record entry page. This method was meant as a "last resort" for when the platform could not facilitate a booking automatically, and instead an SDC had to manually go to a supplier to make a booking/reservation.

The intention was for there to be less text and use more vector based, illustrative, graphics.
Unfortunately, this ended before I could continue.


Plutonium Launcher


Mid 2018, I created a prototype for an Alternative Launcher for a project known as Plutonium, a group that created Enhanced clients which provides Anti-cheat, dedicated servers and modding support.Below are screens of the working prototype, prior to the groups shutdown in 2019 before being rebooted.The source code still exists, but due to the necessary API's either no longer existing or being completely rewritten the app no longer functions well enough to demo.

In 2020 when the project was rebooted, I was brought on to develop the new launcher.However, due to limitations set by the client developers, the launcher I ended up developing was not what I initially envisioned and in my honest opinion, is not good enough to display on this page.


ABRM Logistics


Early 2018, I created a fun little application for tracking delivery/job progress in TruckersMP (a multiplayer mod for Euro Truck Simulator 2).The goal was to create somewhere to track the delivery progress of members in our "virtual company", ABRM, as well as give a platform for people to compete and give useful/fun statistics.


JaxBot


You can find more information about JaxBot on my page about JavaScript Projects, but the TLDR is that JaxBot is/was a combination of a CRM Web App and a Discord Bot (now known as Discord App).The web panel was used to more easily manage members, applications and some integrations with our games/servers.Due to the project now being shutdown, not many screens exist other than these current two - however the source code does still exist...

Source 2 Maps

Combat Training Live

Originally named One versus One (OvO), it was first developed as a Garry's Mod gamemode which proved to be very fun amongst family and friends.I then expanded upon this, in S&Box, when I recreated the project as "Combat Training Live".The game is simple: Fast-paced 1v1, in an environment specifically designed for it (mirrored maps, etc), where players can just chill and shoot the shit, literally and metaphorically.During development we accidentally introduced some bugs, that we later reworked into features. One bug become the Spectre Ability, which allowed you to gain temporary immunity and increased speed, at the cost of not being able to use your weapons and your health slowly being drained.


Source 1 Maps

rp_scp_tophat

An SCP:RP Map, designed by myself and inspired by ever sci-fi underground evil laboratory I could think of.Indefinitely postponed, because the owner of the SCP:RP server went MIA.


de_complex

My first attempt at a competitive map for CS:GO, developed during the first COVID lockdown.Originally inspired by a school, but modified to avoid being too similar and shifted into the "lab/government-facility" theme.Originally paused when I lost interest in CS:GO, but may be resurrected in the future as a CS:2 map...


rp_downtown_remastered

A community server I often played was wanting a remake of their usual map rp_downtown_tits_v2. I created this as a proof of concept to submit to them.I wasn't chosen as the one to remake the map, so I didn't continue much of the development afterwards.

Wsky Lootboxes

Custom made for TopHat Network™, Lootboxes gave frequent players the chance to win weapons and player model crates at the end of each round.Player's could also scrap these items, trade them on the market, and later plans included the option to Auction items (although this was never developed).Collected scrap could be used to buy additional crates from the store, as well as several randomly generated items from the daily shop.

Wsky DarkRP Vending Machine

When I first started this project, there wasn't anything that really anything that met my requirements for a DarkRP vending machine.Since starting, a number of addons have appeared serving either almost the same purpose, or existing addons have been updated to support what I needed.So what was this? It was a simple vending machine that functioned as a global market. Anyone could buy or sell their items, and it worked even when one of the players was offline.

Wsky FastTravel

Hey, we're all a bit lazy sometimes... right? Having to walk from one side of a large map to another sucks, especially if you're playing a server that incentivizes killing/mugging.So I thought, why not just take the bus? or a taxi? or some other mode of public transportation.That was the goal, entities that could be placed around the map that blended in with their environment, but could be used as obvious fast-travel points.

Combat Training Live - Cinema Map Assets

Cinema, one of the maps being developed for Combat Training Live, is a closed modern cinema complex.Planned assets were Ticket kiosks, confectionaries such as slushies, popcorn, etc.

Tower Unite - Decorations

When creating/designing my condo in the game Tower Unite, I wanted custom props to decorate with.As the game supported the steam workshop, I thought it would be fun to model some items to be used as decoration.Some of these items didn't need to be overly detailed, so they had a basic appearance.

trestle.js

Trestle was my own attempt at creating a Node.js REST API Package, solely based off my past experiences with Laravel. Before creating Trestle, I had no experience with any other similar frameworks (such as Express or Nest.js).I based it loosely off of Laravel/Lumen, and built it using my own personal preferences.
I was also keen on making it "hot-swappable" at the time, as well.
The latest version, v.2.0.0, features TrestleAPI and routing, and automatic OpenAPI spec generation.
Future plans entailed Database support using Sequelize, Authentication, Middleware and Transformers, and (Secure) WebSockets Server support.
The project is currently inactive, and if restarted would most likely be completely rewritten in TypeScript.

JaxBot

JaxBot was a combination of a CRM Web App and a Discord Bot, custom built for TopHat Network™ to handle managing members, applications, and integrated with several game servers.Created using Node.js, and used AWS RSD for database management/storage, and host on AWS S3 for the web frontend.Jax integrated with our game servers, such as TTT which would mute linked discord users when they died in-game, until the next round.Jax was shutdown when TopHat Network™ also shutdown, however, there have been recent plans to revive TopHat and most a new project "Gaffer" has been started in Jax's place...

Who I am

My name is Luna, I'm a Developer based in the UK. I originally planned to get into video game development, but pivoted to web development.I'm obsessed with experimenting with new Tech, and am always trying to improve my skills and keep an updated/open mindset.

My Skills

Vue.js

I moved onto Vue 3 in 2023 and the transition was smooth as silk.
All my personal projects use Vue 3 now, and it's my framework of choice.
I initially started with Vue 2 in 2016/2017, using this for years for all web dev as I found it was a perfect framework; not overly-complicated, yet still advanced enough to get everything done.

JavaScript

Starting from 2016, I've experienced all different forms of JS. Ranging from pure, to jQuery, to frameworks that utilised it (Vue.js).I believe that the list of what I can't build in JS, is far shorter than the list of what I can.

Node.js

I started experimenting with building Node.js applications in 2019, since then I seem to have become addicted.I've built REST APIs using custom libraries, Standalone applications to managing photos and uploading them to AWS, Apps to run entire Minecraft Servers and maintain them with updates, mod-loaders, plugins, mods, etc.

TypeScript

My preferred method of development nowadays, TypeScript makes life just a little bit easier at the sacrifice of needing a bit more set up than most projects.

Other Skills:

  • Adobe Photoshop

  • GIT Version Control

  • Docker

  • AWS

  • UI/UX Design (unoffical)

  • (Basic) TDD

  • (Basic) React

  • HTML5

  • CSS3

Previous Experience

Mobilleo

FOD Mobility Group • 2019-2023

Mobilleo is a all-in-one "mobility-as-a-service" solution for businesses for urban, city-to-city and country-to-country travel.During my 4 years working with Mobilleo, starting with a team of just 3 Frontend developers, I've upgraded frameworks, redesigned entire features, solo implemented new complex features, introduced improved payment flows and integrated 3D Secure.In more recent time, I've convinced the business to allow us to rewrite the frontend, using React and MFE (Micro-Frontends) using Module Federation.I've also unofficially been the Teams UI/UX designer for some of this time, creating designs in Sketch/Adobe XD/Figma to sell new features, and to assist in implementations of new features where higher ups had been blocked because they couldn't picture how the feature would work.

Mobilleo Payments

FOD Mobility Group • 2023

Due to Technical limitations, and an aggressive time-crunch, our mobile app development team requested web team's assistance with integrating payments into their apps.The result was a External Payments web page developed solely by myself using TypeScript and no frameworks, and all custom CSS.This external web page was designed/development in such a way, that any platform or product could theoretically use it to make payments for a Mobilleo Booking, and I designed it carefully to work well across Mobile and Desktop Screens.

Mobilleo PWA

FOD Mobility Group • 2020-2023

Mobilleo originally was purely for the Desktop, if you tried to open it on your phone it was essentially unusable.Open it anytime between 2020 and 2023 however, and you'll find a carefully crafted UI designed almost as if it was a mobile app.in 2020, Mobilleo was developing (or re-developing) their Android app, and unfortunately wasn't going to be finished in time for release.Realising this, out of hours I began working on an update to allow Mobilleo to work on both Desktop and Mobile. It wasn't perfect, and it only supported customer facing screens, but it was enough to get us to pass our deadline while the official app was continued worked on.In 2023, maintaining the Desktop and Mobile aspects of the app began slowing down development, and with new iOS and Android apps on the way the decision was made to remake Mobilleo in React and drop support for Mobile, focusing once again only on Desktop.

Maintenance Central

Europlus Direct • 2017-2019

Maintenance Central was an in-house CRM system, designed and developed for supporting customers of Lenovo, IBM, Hewlett Packard, and more, with their product warranties.When I was hired, as a Junior Apprentice, Maintenance Central was Laravel for Frontend and Backend, however 7 months later we switched to Vue.js for the front-end, and I became the sole developer and maintainer for the entire product.I took lead in several developments during my time with the company, one of which was the development of an "Operations Dashboard", again involving both front-end and back-end development. During this I worked closely with the operations team members to get their ideas and feedback.

Data Processing Tool [DPT]

Europlus Direct • circa 2018

During my time working with Europlus, one of my tasks was a data import job. This involved extracting Gigabytes of customer warranty data from several excel sheets, all in different formats, from different vendors (Lenovo, IBM, etc).This extracted data then needed to be formatted, checked against external warranty checking sites to see if it was out of date data (i.e. a customer had already renewed), and also needed to be sanitised and in some cases corrected.This job could take several days, and when factoring in importing the data into the system this sometimes could take an entire week... an entire week of the sole developer, not doing any development...In addition to this, I was also expected to create reports on the data each month. How many new customers? How many existing? How many were unprocessable? How many had to be fixed? How many already had been renewed?This almost became my entire job, and was extremely stressful (I was a Junior Dev, not a data analyst!), luckily I came up with a solution - Data Processing Tool [DPT]DPT was written in Electron, and communicated directly with the vendor's APIs, alternatively it also could use an in-house API that could check the information faster, keep up to date records and keep caches.So how fast was DPT? In a worst case scenario, DPT could process 3,000 serial numbers in less than a minute.But that wasn't all, because in addition to exporting clean usable data for imports, it would split the import files by weeks the products were due to expire, so we could import one week ahead at a time - having data ready for our sales team.Oh and those reports I mentioned? Yeah, it auto-generated all them too.