devCodeCamp wants to improve the startup community in Milwaukee, Wis. We understand it must be done by lending a helping hand, which is what the Startup Weeks project is all about.
Staff, instructors, and recent graduates partner with a local startup company to build out their minimum viable product (MVP) for free! The Startup Weeks project is an important initiative to support and improve the tech scene in Southeastern Wisconsin, and Milwaukee startup theMINIclassy is our third project of 2016.
theMINIclassy’s trend-setting clothing line for kids has peaked interest across the country. With spots on “The Ellen DeGeneres Show” and “The Today Show,” as well as, featured in The Huffington Post and the Milwaukee Journal Sentinel, theMINIclassy’s high-end streetwear for children is quickly making a name for itself.
“We believe that different, unusual, brave ways of thinking are what make the impossible a reality. We want to give kids permission and encouragement to imagine, explore and create — the things that make magic. Our mantra — KEEP YOUR HEAD IN THE CLOUDS™ — is a reminder not to let anyone tell you to play it safe or that you can’t do something. It’s a rebellion against being dragged back down to earth, following the crowd or settling for average. theMINIclassy is for all the little dreamers out there!”
Through collaboration with the theMINIclassy team, which includes Co-CEOs and lead designers Michelle Lopez and Andrea Dotzauer, Operations Administrative Assistant Dima Pochtarev, and Inventory Systems Manager Katie Meylink, we decided that an inventory management system to keep track of orders, fabrics, and more was the best way to go.
The next step was to put together a development team comprised of top-tier recent devCodeCamp graduates who are currently in the deployment period. Being able to work on a real-world project while continuing the process of interviewing for jobs with companies in Milwaukee is super valuable. Graduates Hilary Berigan, Kris Falk, Nathan Thao, and Damon Young were eager to jump at the opportunity to build an inventory management system for theMINIclassy.
Make sure to keep coming back to check out the updated blog to see a day-by-day account of the development team’s progress on the project and what being a student in the full-stack fully immersive program is all about.
The first day of the two-week project began with a productive kickoff meeting. theMINIclassy proved to be very organized, with a detailed, multi-page layout of what they want to see for their MVP. The combination of a brief history of their company with a visual breakdown of what they want the inventory management system to be left the development team very impressed. With the ball in the developer’s court, it was time to research, nail down technologies, and get to work on the fun project.
Look at what Hilary, Kris, Nathan, and Damon accomplished on their first day:
- Kickoff meeting
- Technical meeting – discussed the advantages and disadvantages of using various technologies. The team decided on Python (backend), Django (Python web framework), and SQLite3 (database)
- Researched Python, Django, and SQLite3 to get a better understanding of how they work together
- Looked over the features of the project and discussed how to implement them in the project
- Began work on an entity-relationship diagram for the database and a UML class diagram
On Day 2, the developers got straight to work on more research as well as the installation of software that will be needed to achieve completion of the project. Understanding a new programming language and web framework takes a bit of time. Thankfully, Hilary, Kris, Nathan, and Damon were up to the task to comprehend the new technologies as quickly as possible. The effort paid off greatly.
Here is a breakdown of what the development team accomplished on Day 2:
- Completed an entity-relationship diagram for the database and a UML class diagram
- Installed necessary Python pip packages
- Installed Django and spent a significant amount of time understanding how it works
- Installed SQL manager and got familiar with SQLite3
- Continued extensive research on Django. More importantly, got a better understanding of the web framework
After doing all the necessary installations and research, the development team is looking forward to begin work on the project itself. This means setting up the database and Django to start forming the skeleton of the inventory management system.
After two days of nearly non-stop research, Hilary, Kris, Nathan, and Damon began work on theMINIclassy inventory management system. The first task was to implement the entity-relationship diagram and begin the process of creating the database. At the same time, the team wanted to begin getting their hands dirty with other various aspects of the project, most notably Django.
Check out what the developers achieved on the third day of the project:
- Linked the SQLite3 database with the Django project
- Set up the database
- Created the models
- Began creating the initial forms and views to interact with the inventory management system
- Started to research how to incorporate stylesheets, more specifically Bootstrap, into the project
- Began to research template inheritance to make a layout for a given page
After receiving a modified spreadsheet based on new tables from Katie of theMINIclassy, the development team got to work quickly implementing the desired changes. At the same time, Hilary, Kris, Nathan, and Damon were also working hard on creating dynamic data entry forms to allow the input of inventory items.
Take a look at what the development team completed on Day 4 of theMINIclassy inventory management system project:
- Made the ability to create records for the database
- Created dynamic data entry forms
- Modified existing tables to reflect changes sent from theMINIclassy
- Modified other changes to the database tables
With a productive four days behind them, Hilary, Kris, Nathan, and Damon were eager to begin working on the administer side of the project. The idea is to have roles broken down for administrators and for employees. In order to do this properly, there needs to be backend functionality, while also customize the views appropriately.
Check out what the development team completed on Day 5:
- Got familiar with the built-in administrator views that comes with Django
- Began to customize the administrator views
- Began to customize the administration functionality. Using the built-in functionality is appropriate when considering the inventory management system is an internal application.
- Started to create the ability to have a HTML template that would have a database model passed in, which would allow to display the appropriate data based on the given situation.
- Continued to work on the functionality to display data from the database
On the sixth day of theMINIclassy inventory management system project, the development team began to work directly with the Django administrator files. The point was to integrate the necessary files into the web application for better customizability. Included with additional functionality was allowing an administrator to perform CRUD operations. Essentially, this takes the project to the next level by allowing an administrator to be interactive with the inventory management system and recording changes in the database.
Here is what the development team accomplished on Day 6 of the project:
- Started to work directly with the Django admin files
- Integrated the proper files into the web application
- Made it so all the database models are populating the database
- On the administration side, created the ability to perform CRUD operations. Essentially, this means allowing an admin to create new entries, edit existing entries, and delete entries.
For Day 7 of the project, Hilary, Kris, Nathan, and Damon are hoping to implement search functionality to allow the ability to track down specific inventory items, allow the ability for employees to view inventory items but not alter any of the data, and subtract from the inventory of supplies when a product is made.
The seventh day of theMINIclassy inventory management system project is when the development team began to really hit their stride. For starters, Hilary, Kris, Nathan, and Damon were able to accomplish two of their three main goals while making significant progress on their third major goal, which is always a good way to build confidence. From there, the development team was able to get a jumpstart on other areas of the project, so that they could continue building off the positive momentum they gained from Day 6 to Day 7.
Take a look at the goals Hilary, Kris, Nathan, and Damon were able to accomplish for Day 7:
- Implemented search functionality to allow the ability to track down specific items in the inventory. This will allow employees to access items very quickly on the fly.
- Created the ability for employees to view inventory items but not alter any of the data. The idea is employees can do various tasks inside the inventory management system, but they won’t have administrator privileges.
- Started to work on the functionality to subtract from inventory of supplies when a product is manufactured
- Figured out how to integrate the Django admin functionality into their app to take advantage of built-in functionality
- Began initial work on the user experience (how employees and administrators will interact with the inventory management system)
With so much accomplished on the seventh day of the project, the team felt they were in a good spot to get a lot of work done on Day 8. Their goals are to make significant progress on the user experience, specifically how to customize what is being displayed on the home page of the application. Also, how to change or add to the forms.
On Day 8 of the theMINIclassy inventory management system project, the development team continued to use their confidence to keep their work ethic at a high to make good progress. Also, they used the number of developers on the team to their advantage by splitting up some of the heavy workload. This allowed them to get more of the features closer to completion as the number of days on the project began to dwindle.
Check out what Hilary, Kris, Nathan, and Damon accomplished on the eighth day of the project:
- Continued to work on the overall user experience for the application. More specifically, figured out how to customize what was being displayed on the home index (home page) of the app. This means writing code on the models to make certain property fields required. Also, figured out how to change the forms and add to them.
- Changed the CSS (style) of the web application to follow the theme of theMINIclassy’s website
- Completed the functionality to automatically subtract from supply inventories when a product’s quantity goes up
- Completed the functionality to automatically notify a user if there is not enough of a supply to make the product. This occurs after automatically subtracting from inventory of supplies.
- Completed the functionality to automatically subtract from product quantity if order quantity increases
- Began to work on creating levels of permissions based on who is logged in (employee or administrator)
After a very successful work day, the team appeared to be in great shape heading down the stretch. Their goals for the ninth day on the project consists of finishing up the functionality for the user experience and making specific groups for the different level of permissions based on what type of theMINIclassy personnel is logged into the web application.
With the project getting closer to completion, Hilary, Kris, Nathan, and Damon utilized their impressive work ethic to the fullest. Despite there still being so much the team wanted to accomplish as well as hitting the occasional road block, they knew they needed to continue completing one feature at a time instead of getting ahead of themselves. With splitting the workload being an obvious success on the previous work day, the development team continued onward with that mindset.
Here is what Hilary, Kris, Nathan, and Damon accomplished on the ninth day of theMINIclassy inventory management system project:
- Completed the user experience for various roles (employee or administrator) on the application
- Since Django did not provide a read-only view, something the team needed in order to complete one of theMINIclassy’s desired features, the development team had to update the models to allow the functionality.
- Updating the models opened the door to make specific groups for different levels of permission. Once again, these levels of permission correlate directly with either an employee or administrator being logged in to the web application.
- Created a level of permission for an admin, which allowed a user to have full functionality to add, change, delete, or view an item in the application.
- Created a level of permission to allow for quantity change only. Essentially, this means the ability for a user to change inventory quantity and view inventory quanity.
- Created a level of permission to allow for view only, which would mostly be used for a standard employee. This allows for the person logged in to be able to view everything, but not edit, add, or delete an item.
- Added a new property field for a minimum threshold on all supplies and products so that a user can specify the minimum threshold before they need to restock
- Completed the ability to set up a notification for when the threshold is reached
A very busy Day 9 set up the team brilliantly as they inched closer to completion of the inventory management system. Their goals for Day 10 consists mostly of figuring out how to set up the web server in order to deploy the web application.
After talking with Stack 41 on what flavor of server theMINIclassy would need to host their inventory management system, the team got the necessary credentials to access the server. From there, Hilary, Kris, Nathan, and Damon turned their attentions to networking and migrating their project to the web server. More specifically, they worked out what web server software would better serve their needs and the technologies they chose for the project.
Check out what the development team accomplished on Day 10 of working on the application:
- Began to research what web server software would better serve their needs
- Concluded that Apache HTTP Server and Nginx were both great web server software that would help them fulfill their goals
- Discussed the pros and cons of each web server software
- Decided Nginx was the better of the two to use to deploy the Python Django web application
- Got familiar with Nginx and began to learn how to migrate their project to the server
Hilary, Kris, Nathan, and Damon took their Python Django prototype and built a fully-functioning inventory management system in ASP.NET Core. On theMINIclassy project in particular, using ASP.NET Core gives the development team more control over what they want to do, which in turn gives theMINIclassy the ability to handle managing their inventory exactly as they want. Despite facing many challenges throughout working on the project, Hilary, Kris, Nathan, and Damon never gave up. For that reason, they were able to come together and deliver a fantastic product.