There is finally something to look at.
I wasn’t incorrect when I predicted that I might be working on this project in days or even hours per month. It’s been about two months and I think that’s an appropriate length for a “sprint” on this project.
The app is called Excido which is Latin for “slip out or escape from memory”. The plan is still for the app to become a service where users can share content that automatically expires and then disappears. I’ve secured the domain names Excido.info and Excido.net, both of which I think are exceedingly appropriate for this app.
I set out to do the bare minimum to make the app work and be useful. Currently the app works, but I don’t know if it’s of any use just yet. I added four features to the backlog when I started:
- Allow users to create a unit of shared content.
- Allow users to specify an expiration on a unit of shared content.
- Allow users to download a unit of shared content.
- Do not allow users to download expired content.
Of these, only the first is complete. Right now the app will let a user add lines with two fields each to a list. The user can edit the two fields of text and the user can delete one of the lines. That’s it – like I said, “The bare minimum”.
However, a lot of work went into getting to that point. I had to build a basic architecture in order to get to this point. The app is built upon an Azure SQL Database created and maintained using Entity Framework code-first database migrations. On top of Entity Framework, I’m using ASP.NET Web API and Breeze. Breeze creates an OData service on top of a Web API controller on the server side and a full-service data access layer on the client side with built in caching and change tracking.
Typically, I would create a repository layer and a business layer between the Web API controllers and data access layer and segregate them using interfaces, but I’m allowing the Web API to reach directly into Entity Framework in order to take advantage of data access service built into Breeze. Currently the app doesn’t do very much. It shows a list of records and allows the user to edit and update those records. Right now, moving the repository and business layers to the client makes sense. If (when) the program gets more complicated, I can add some more layers on the server side and use asymmetric layering.
I definitely did not accomplish everything that I thought I would, but I think I’m still going to call this a successful “sprint” because I delivered something tangible.
I think I’ll be able to finish the rest of the current backlog in the next two months, so I’m just going to take everything I didn’t finish and move it into the next sprint. I have a lot of ideas for where to go after that. If I find some time to put them down, I’ll add them to the backlog for future sprints.