- This article is about my personal project from December 2018: https://shineproject.io/welcome/features
- Check out a demo on YouTube: https://youtu.be/RAFEqhFVypY
This article is part of a short series where I am writing brief thoughts about my personal projects, first I posted cmpct.io my latest project at the time of writing. I also intend to do a write up about PortalCMS in a few days.
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!
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).
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.
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.
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.
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!