This is one of my more recent projects with the Missouri Department of Conservation in which I was the lead developer and primary contributor.
The project was a mostly Greenfield project in which we digitized the process for waterfowl hunters to register and be selected by lottery style drawing for a limited number of hunting blinds on the Upper Mississippi River.
We used .NET MVC 4 (w/ C# Razor), Entity Framework 5, WCF SOAP and REST Web Services, MS SQL, JQuery UI, and Kendo UI.
Architecturally, we implemented a straight forward N-tier approach, using MVC at the presentation layers, standard class libraries for business logic, and EF w/ Linq to entities at the DAL. To accommodate data transfer between the different model objects (view models, business models, web services, etc) we implemented DTO and Automapper wherever possible.
And of course we evaluated and implemented standards as much as possible for cross-cutting concerns:
- Security – MVC standards security – forms login with cross side scripting protection
- Logging & Error handling – Emah & Log4Net – With log files going to a DB with a web front end
The project encompassed three high level components:
- Public facing web app
- Ability for hunter to register for the drawing
- Ability for hunter to update/edit registration
- The actual drawing/lottery, where hunters are randomly chosen and assigned blinds
- Ability for hunter to choose co-hunters to be included in their hunting party
- Automated emails to registrants throughout the process
- WCF web service inside the DMZ
- For security reasons, public web app can’t hit internal DB directly, so we implemented a WS inside the DMZ to act as a proxy to the DB
- Internal adminstration app
- Ability for admins to view/update/delete grids of all the internal data collected by the public app (implemented using Kendo grid)
- Ability for admins to schedule automated drawing dates, or manually run the draw/lottery
- Ability for admins to update page contents via CMS style WYSIWYG editor (implemented using Kendo editor)
- Ability for admins to send emails to users
There were many challenges in this project, due to complex business requirements (we are talking about implementing government rules and regulations after all). For example, when a hunter enters their Conservation ID, the app had to check whether the hunter had the appropriate permits to hunt waterfowl for that season. These permit requirements had evolved over time, and resulted in a complex set of requirements matrices that had to be parsed through and validated for each hunter registration, along other factors like age, disabled status, veteran status, etc.
Another challenge, which was less tedious and more interesting, was designing a graphical map display of the hunting blind locations for the hunter to visually click and select his preferred blind locations. We used a combination of straight HTML, jQuery UI and Kendo UI to render all the eye candy magic.
Ultimately, after several months of development (and project $$ spent), the project was closed due to political conflict. It turns out that special interest groups that held weight with state government had been holding fund raisers at the physical lottery that was being held each year, and if the process went digital, all of that donation money would disappear… So leadership decided to shelf the project and leave the existing process in place.
Regardless, it was an interesting project with lots of good experience.