Final project experience at Holberton’s first year
Everything that starts, someday has to end, and the first year at Holberton has come to its end for us, this experience was a great one, not only for the things we’ve learned but also for the people we got to know, this journey had its ups and downs, but after all, we learned how to deal with it.
The final project our team worked on was a help-desk system to attend issues that could happen in a working environment, this system was required for a company we could be in touch with during the developing process, the key features they asked us to implement were that the system had to be able to manage 3 roles: admin, agent and user, giving each one of them specific actions like creating and attending tickets, updating profile information and showing a summary of the generated tickets.
The goal of this project was to give users the ability to report any issue that could happen during his/her working hours and create tickets explaining the incident, so an agent could take a ticket and attend the issue, solving it the quickest possible.
We as a team accepted the challenge and put to work into building this system, before going much deeper into the project detail let me introduce the team I worked with by giving a description of the roles each of us took during the project:
- Joshua Enrico: Took care of front and back-end, he paid more attention to the database and managed to implement a chat feature to communicate users and agents.
- Renzo Perez: Took care of front-end design, he made sure to build all the templates needed for the user to interact with the system covering every feature available.
- Renato Leon(me): Took care of part of the API for ticket administration and also worked in a security feature involving authentication and authorization.
As a team we divided the work in 3 weeks:
Week 1:
- Conversations with the product owner
- Specify system requirements
- System design
- Architecture design
- Technology selection
Week 2:
- Select roles
- Create GitHub repo
- Dependencies installation
- Implementation of core features
Week 3:
- Implement API endpoints
- Implement view controllers
- Implement front-end views
- Deploy App on AWS
Personally my focus was on the system to be the most organized as possible, thinking about future changes, maintaining a good file organization makes adding new features easier than adding them in an unorganized project, so I talk about this with my peers, and we had to change and rename some files, create new folders and standardized the way of development if we wanted this project to be extensible, fortunately we could collaborate to make that happen, although it took almost a day to refactor all the files and code we had until that point.
The decision to work on this project came from the fact that the case or better, the challenge was proposed by a real company, so it made it attractive for our team, we thought of this as a way of start getting experience on what we could be doing once we graduate and start working, so the deal was to make the system the best we could, for me was the first time working in the development of a system like this, I though the complexity would be higher than it really was, so I was kind of obsessed with the final product to be more than just good, it had to be impeccable, easy to use and yet powerful, to cover all requirements, fortunately I always had the team support, and together we could accomplish to finish the project on time.
Put simply, this is how our application works:
For the backend we chose to work with flask, due to its flexibility and also because all the team members knew this framework, this made it possible to accelerate the developing process, for the frontend we used jQuery, HTML, bulma and bootstrap, this decision was made by our frontend developer, as he explained to us, his choice was backed up by the fact that he had experience working with most of these libraries, and also because he wanted to try new libraries like bulma for example.
Some features we implemented:
- User authentication using tokens, allowing access only to authenticated users
- Ticket creation, a user can create tickets for each issue they encounter during his/her working hours
- User administration, the admin can mage user information, can allow and restrict user access to the system
- Agent updates over tickets, an agent can take a ticket and mark it as solved also
- Real-time chat, users and agents can have real-time chats over each created ticket.
- The app is fully responsive, this makes our application compatible with phones, giving users easy access and navigation from their mobile devices
Fortunately for this project, our team didn’t report any technical challenge, we knew the majority of the frameworks and libraries we chose, so no technical challenges appeared during the developing process.
By working on this project I learned how to combine different technologies and make them work together, even though I didn’t interact much with front-end, I also could learn something about the frameworks and libraries we can use to make front-end look awesome because at some point in the project I had to implement some pages and I did it by taking the already created pages as base model, other important thing I learned is to work with a team, maybe we could improve better at communication but he experience was fine.
If I have to do something different would be to work more as a team, maybe by having meetings more frequently, improve communication and also make better decisions to start with the project, agree on the standards to use, so each member knows what the others are doing and thus avoiding lose time trying to understand each other’s code when asked to implement new features.
After all, I consider that we made a good job, personally I’m interested on how applications work at higher level and try to grasp this knowledge by making diagrams, drawing components and make them interact with each other.
If you’re interested, here is the project’s landing page, here, the deployed application, and here, my LinkedIn profile.
This journey has come to its end, hope you learned something from this post, take care.