A full stack experience from being on the team at College for V1.0 and then doing V2.0 as a solo developer!
So, yesterday I was a very satisfied Software
Developer for finishing the development and launching MulderbertPX, the V2.0 release
of the full stack ASP.NET application. This release brings it to the next stage
of its development as a project. You may have seen this trailer for yesterday’s
application launch on Github and Azure, which was going around Social Media
sites.
The application’s stack is a nice full
stack iteration I would recommend to anybody developing a Minimum Viable
Product (MVP) and is as follows:
Application
Layer:
ASP.NET in C# using cool features like
@Razor
Database
Layer:
Native XML DB for Contacts & SQL Server
for Customer Details/Transactions
Network
Layer:
Azure Cloud Deployment with configuration
at Storage and Network layer making the application more efficient and secure
So, yesterday’s launch was totally awesome
but what’s new in general terms for V2.0?
Application Reengineered from a Database First design – I re-engineered the application with data modelling (database)
tables moved up-to the application layer as modelling Enums. The V2.0 code first approach and MVC
design pattern made sense as a redesign decision given the decreased
pressure on database calls for information in processing transactions in
particular.
More Structured Data – Data generation for transactions has been mainly transferred from database
tables to app layer Enums, which also provides flexibility for future
development direction keeping data accuracy high and customer effort low.
Database Redesigned - As I’m still a poor student
in spirit (and pocket), I could not afford to have a larger SQL Server instance
on Azure so a thrifty architecture for the application made sense making the
SQL Server instance as small as possible. By Microsoft Azure’s pricing tiers
go, I cannot make the database resource any smaller, which is good news for my
empty pockets and also good direction for anybody looking to develop an Minimum Viable Product (MVP)!
The new features for this re-engineering
orientated release is as follows:
Responsive Design – Two
stages (768px/500px) of responsiveness are styled so this MVC application can
render just enough resources to be presentable at screen sizes less then a general
desktop. This includes a hamburger menu in the restricted states, which is run
on JavaScript functions.
Login Box – Whilst
technically a developed feature, the use of customer details (e.g. Customer ID)
in a box like presentation along with options applicable to the logged in and
logged out state are a basic but useful feature to have.
As the project is Open Source, you can
check out my code on Github at at Project MulderbertPX.
Below is a 7 minute 50 second feature movie demonstrating the application’s
features with wonderful ambience music from Pytor
Ilyich Tchaikovsky… hope you like it!!
The main lessons learned from this
experience has been that:
ASP.NET still has great abstracted functionality to do cool things
concisely such as @Razor Enums helper methods, which streamlines “View” code
immensely.
Good
Software Architecture is incredibly important, as
you don’t want to struggle with technology access like I have done. I completed
my SQL Server instance on Azure using a Mac and had no view of my DB internals.
I started developing this project on Windows machines at Dublin Business School
(DBS) working on SQL Server Management Studio
(SSMS) with full view of my DB internals. When my access to DBS
resources finished 29th of September, the last part of the project
was done on Azure’s brand new SQL Server Query window. I enjoyed the SQL coding
BUT missed looking at how many tables, attributes, views, stored procedures and
indexes I had. So please consider this my “Dear Santa” letter as Christmas is
coming… “Dear Microsoft, I would
like SQL Server Management Studio for Mac please? Will you be my Secret Santa
this year???”
Good
Programming Practices like abstraction,
encapsulation, inheritance and polymorphism are kernels that support clean,
neat and reusable code! Considering these concepts was how I developed the
application so its understandable that mirroring the service and product’s coding
paths may look like an inefficient implementation. However, future development
may see the customer journey diverge on goods versus service products or maybe
a phased introduction of an online payments service is required. Both scenarios
are likely making separate implementation paths in this release a good idea.
It’s a judgement call based on the V1.0 frontend design, which hopefully will
prove useful in future developments.
Version
Control is your friend. The extensibility of the application
was apparent to me and working as part of a multi skilled team would be the
only way to develop larger and scaled future versions of the application. Also,
if everything goes up in smoke on my Mac (I call her “Debs!”), using version
control like Github is the only option!
SEO
Counts. It’s a good idea to ensure your metadata is
working and you register the application with Google and Bing especially if
it’s a real e-Commerce site. There is an impressive array of API options
available for Facebook and Twitter so taking time to understand what they are
is a good idea!
I guess as I start my next application
(ASP.NET Core app) to showcase my projects to date, I will remember this
application as a fun development experience that was loaded with learning for
the future!