DEV Community 👩‍💻👨‍💻

Cover image for Personal Project:
Thomas William McClean
Thomas William McClean

Posted on

Personal Project:

This article is part of a short series where I am writing brief thoughts about my personal projects, first I posted my latest project at the time of writing. I also intend to do a write up about PortalCMS in a few days.

What is Shine

Shine is essentially a to-do list website, allowing you to create lists for things that you need to do, and add the tasks that are needed to complete the list.

There are lots of competitors in this industry, but I wanted to create Shine so I could use it for my own personal organisation. Since I created it a year ago I use it almost daily, mission accomplished!

Alt Text

I started to build shine in November 2018 when I was made redundant from my job, I found myself with a lot of time on my hands, with three months notice; essentially gardening leave, so I put my hands to work building this great project. The project launched mid January 2019 so it took around 2 months of daily work and rework (Out of my local Starbucks).

Key Features

  • Customisation: There are lots of ways to customise your experence in Shine, list backgrounds is among my favourites, any time you think of a list you can find the background to match and make it feel like your own.
    Alt Text

  • Unlimited content for free: There are no paid tiers or adverts, nor is your data harvested and sold. Create an unlimited number of lists and to-do items.

  • Tracking list completion: One way Shine differs from competitors is that as you tick off completed tasks, you can see a real time progress bar for how close you are to completing your list.

  • Super responsive: This is one of my favourite projects when it comes to mobile responsiveness, phone, tablet or desktop; the experience is the same, but the UI gets out of the way.
    Alt Text

  • List suggestions: Not sure what to organise? Every month brings new suggestions for things you may want to plan for, new years resolutions? Valentines day date? all offered as suggestions by Shine
    Alt Text

  • Powerful search: Remember doing something a long time ago, but can't remember why, the search capability looks through all your past and present content to find what you are looking for quickly.
    Alt Text

Technology Stack

  • VueJS: I had been using VueJS for a year before I started this project, so I was well versed with how amazing VueJS really is, I chose to use Vue-CLI as my scaffold, this was just due to my familiarity with it, with hindsight now I wish I had chosen Nuxt, but alas I was not aware of Nuxt at the time.
    • Since working on this project, my knowledge of VueJS has continued to expand exponentially, so the code style here is not necesarily how I would choose to do it again now (lack of vuex usage), but as a product, it delivers what I want even today.
  • .NETCore Web API: As I am traditionally a .NET based engineer, .NET was an obvious choice for a seperate back end API, I had been using .NETCore for around a year so I was comfortable adopting core over framework; for a green field project, this was pretty painless even in the earlier days of core.
  • SQL Server Azure: Another choice I probably wouldn't make today, but as I had many years of experience working with SQL, I decided to develop my data retention strategy with SQL and Entity Framework (Code first), it performs well; given the website is pretty low scale. I actually hooked up the migrations to run during the first web request following deployment, which on a low scale application works great!
  • Azure App Service: Both the frontend Vue application and the backend Web API are hosted on the Azure App Service, both using Kudi OOTB linked to GitHub.
  • Azure CDN: All image assets are retrieved over Azure CDN, images that are generated by end users are stored in Blob storage which has a CDN layer over the top.

What next?

I am no longer actively developing Shine, but I may choose to go back to this one day as there are features I would like to add. Particularly I would like to port it over to Nuxt and make use of the new skills and experience I have gained over the past year.

I would also like to refactor the way the VUEX store is used, but such refactorings are difficult for an existing large project so I may allow this product to breath in maintenance mode until I eventually supersede it with a better product.

I do continue to use Shine almost daily, while it doesn't have some of the features found in other comparable products, it is pretty to look at, and does the job!

Top comments (0)

🌚 Life is too short to browse without dark mode