<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jonathan</title>
    <description>The latest articles on DEV Community by Jonathan (@excelsior2021).</description>
    <link>https://dev.to/excelsior2021</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F885899%2F5d41df04-e213-4e5b-80f7-157fa2fb0d05.jpeg</url>
      <title>DEV Community: Jonathan</title>
      <link>https://dev.to/excelsior2021</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/excelsior2021"/>
    <language>en</language>
    <item>
      <title>Lessons from building a full-stack web application</title>
      <dc:creator>Jonathan</dc:creator>
      <pubDate>Thu, 23 Oct 2025 20:22:53 +0000</pubDate>
      <link>https://dev.to/excelsior2021/lessons-from-building-a-full-stack-web-application-9eh</link>
      <guid>https://dev.to/excelsior2021/lessons-from-building-a-full-stack-web-application-9eh</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/Excelsior2021/smash-it-remastered" rel="noopener noreferrer"&gt;SmashIt! Github Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I built a full-stack web application.&lt;/p&gt;

&lt;p&gt;A full-stack application is a complete software application that includes both the front-end (what the user sees and interacts with) and the back-end (the server, database, and application logic).&lt;/p&gt;

&lt;p&gt;Smash It! is a performance tracking app for Table Tennis. Users can record and track their performance and compare it to other users within distinct groups.&lt;/p&gt;

&lt;p&gt;Coming up with an innovative idea is challenging. What can help with the process is identifying a problem. The inspiration for Smash It! came about to solve a problem my coursemates and I faced during our web development bootcamp. &lt;/p&gt;

&lt;p&gt;We would play table tennis every chance we got and we were quite competitive.&lt;br&gt;
We needed a way to record and track our performance against one another. We tried using a whiteboard and spreadsheets but these proved inefficient and cumbersome. Therefore, for my capstone project, I decided to build an app that would solve our problem.&lt;/p&gt;

&lt;p&gt;My capstone project was a proof-of-concept built in a couple of weeks. However, I wanted to see if I could build a production ready application that real users could use.&lt;/p&gt;

&lt;p&gt;It takes time to build a good app. I learnt a tremendous amount, both on the technical and non-technical side of things. Below are a few things I learnt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Non-technical
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Marketing&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Getting users engaged with your products/services, even when it's free, can be challenging. I thought that I'd build the app, release it into the wild, and the users would be pouring in. That is not the case, you need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Target the right audience&lt;/li&gt;
&lt;li&gt;Convey that your products/services truly provide value and is worth being consumed&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Trust&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;While pushing for the app to be used. A comment was made from a potential user that they were apprehensive of sharing their personal data on the app. They didn’t know how the data was going to be used. The data could be used unethically. Not my intentions, however, users want to trust that their data is being handled ethically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Database Design&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;For this project, I put some thought on how to design and implement the database schema. For data-driven applications, how you store and retrieve the data is important for efficiency purposes. This becomes evident as the application scales to handle more data.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Other Technical Areas&lt;/u&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Session Management&lt;/li&gt;
&lt;li&gt;User Verification&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building a full-fledged production ready software application will teach you a lot. Getting users to use it is another problem to solve, and there can be a lot of  non-technical requirements to consider, especially if you plan to make a business out of it. No wonder software companies are backed by so many teams in various departments. Building scalable software ain't easy. But you have to start somewhere.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I built a browser game 🎮</title>
      <dc:creator>Jonathan</dc:creator>
      <pubDate>Thu, 28 Nov 2024 10:25:44 +0000</pubDate>
      <link>https://dev.to/excelsior2021/i-built-a-browser-game-2mh6</link>
      <guid>https://dev.to/excelsior2021/i-built-a-browser-game-2mh6</guid>
      <description>&lt;p&gt;&lt;a href="https://pairs-card-game.vercel.app" rel="noopener noreferrer"&gt;Pairs Game&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/Excelsior2021/pairs" rel="noopener noreferrer"&gt;Client Github Repo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/Excelsior2021/pairs-server" rel="noopener noreferrer"&gt;Server Github Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This has been my longest running software development hobby project. Pairs, a browser game.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inspiration
&lt;/h2&gt;

&lt;p&gt;When I first started teaching myself programming. One of the books I used was Python Crash Course by Eric Matthes. Great book by the way! After completing the book, there are additional resources online.&lt;/p&gt;

&lt;p&gt;The resources included additional challenges to apply what you have learnt from the book. One of these challenges was to build a game based on the card game, Go Fish.&lt;/p&gt;

&lt;p&gt;I ended up completing the challenge, however, there was a problem. It was all in Python and ran in the terminal. Who wants to play a game in the terminal? 🫤&lt;/p&gt;

&lt;p&gt;I wanted to build an application that I could easily share with others. I discovered the best way to do this was with a web application. This is how I fell into web development. Pairs was one of my first web development projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;Pairs has been through multiple iterations and tech stacks.&lt;/p&gt;

&lt;p&gt;The current tech stack (at time of writing):&lt;/p&gt;

&lt;h3&gt;
  
  
  Client
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.solidjs.com" rel="noopener noreferrer"&gt;SolidJS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sass-lang.com" rel="noopener noreferrer"&gt;SASS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.typescriptlang.org" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Server
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://deno.com" rel="noopener noreferrer"&gt;Deno&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.typescriptlang.org" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://socket.io" rel="noopener noreferrer"&gt;Socket.IO&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dev (Client)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vitest.dev" rel="noopener noreferrer"&gt;Vitest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/solidjs/solid-testing-library" rel="noopener noreferrer"&gt;Solid Testing Library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;This game has single player and multiplayer modes. Single player runs completely on the client whilst multiplayer uses a server to share the gamestate between clients.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This project has really helped me to learn and solidify new and existing web development and programming concepts. I would appreciate it if you'd check out the app and provide feedback. I am also open to collaboration.&lt;/p&gt;

&lt;p&gt;Let me know!&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
