-
๐ฑ Iโm currently learning
- OpenShift
- CCNAv7
-
๐ฌ Ask me about
- Docker
- Linux
- Node.js
- React.js
- MikroTik
- Salesforce Apex
-
๐ซ Reach me @ dim@knp.one
-
๐ Some details about my projects
DISCLAIMER: None of the projects are currently live as I am working on configuring a new server cluster.
It started as a school project. The requirement was to develop a simple online game using MySQL, PHP and HTML. However, me and my team wanted to go beyond those limits. We wanted to develop a Monopoly clone that would be inspired by the life in our college.
The game runs on a WebGL build of Unity3D and it also uses UniRx, UniTask and a custom Socket.io client based on NativeWebSocket. UniRx helped to keep the code as minimal as possible and UniTask helped with threading issues we had due to the single threaded nature of Web Assembly. The Socket.io client was something I had to develop as all the implementations that we found were either faulty or closed source. Adding to that, I also had to override Unity's native cookie handling as it occasionally refused to send the required cookies to the server.
The server side of the game is built on Express.js/Socket.io and it uses a MongoDB database. We chose MongoDB because having each game in a separate document allowed us to have very simple queries. However, that does not imply that we hadn't any challenges. Authenticating Socket.io connections using Express's sessions was harder than expected. But, thanks to some npm packages and some code magic with Rx.js, everything synced perfectly.
But besides all the difficulties we made it in less than a month.
This is a hobby project that is still under construction. It will be a monorepo for the whole College Resources project, which currently consists of college-resources/api and college-resources/web.
-
college-resources/api is our GraphQL API and it is based on Express.js and Apollo Server. For user authentication, it uses JWT tokens that are generated by Auth0. Its data is stored in a MongoDB database. This repo is about to get archived as we are trying to restructure the College Resources project.
This API was my first opportunity to design a Node.js based web-app. A lot of mistakes were made, starting from the database choice which is not only slow compared to other DBMS, but it also lacks the flexibility that SQL provides for queries. The new GraphQL API will be based on Nest.js and it will use a PostgreSQL database instead.
-
college-resources/web is the Next/React + Redux client of the project. Once again, the server is based on Express. Express is responsible for the sessions and the Auth0 interactions, as it handles both Password Login and the Authorization Flow (with a little help from Passport.js).
Express also acts a proxy for the API. This decision was made in order to keep the API tokens away from the end users, and better protect them against XSS attacks. All tokens are stored in the session store and get injected to the API requests.
Another school project. It is a Dominoes game that is limited to MySQL, PHP and HTML. As claimed in the requirements, we were not allowed to use external libraries and/or frameworks. So, I had to develop my own component framework. It supports lazy loading, props, and component swapping. Since there is no toolchain, all the component files need to be registered in a JSON file and there is no special syntax for the templates. Everything is done using special
data
attributes ondiv
tags. -
- Greece
Highlights
- Pro
Pinned Loading
-
IceDBorn/pipewire-screenaudio
IceDBorn/pipewire-screenaudio PublicExtension to passthrough pipewire audio to WebRTC Screenshare
-
server.nix
server.nix PublicA flake providing a framework for steamlined declarative management of NixOS containers and VMs
-
arch-novnc
arch-novnc PublicForked from Almo7aya/arch-novnc
Docker container running ArchLinux accessible through novnc in a browser
Dockerfile
-
-
Something went wrong, please refresh the page to try again.
If the problem persists, check the GitHub status page or contact support.
If the problem persists, check the GitHub status page or contact support.