Web and Backend Developer
Hayden Kotelman
Hello! My name is Hayden, I'm a backend and web developer working with experience working in Python, Javascript, and Vue. I'm also learning C# and Go with a focus on building web APIs. I'm the creator and Maintainer of Mealie, a self-hosted recipe manager that's been downloaded over 3 million times. I'm currently seeking full-time remote employment.Projects
Mealie
- Python
- Pytest
- FastAPI
- SQLite
- PostgreSQL
- Typescript
- Vue and Nuxt
- Github Actions
- CI/CD
Working on a open-source project with a larger user-base brought a lot of challenges. In the beginning there were a lot of github issues filed for mis-understandings or bugs related to typos or subtle changes in the API. There were also a lot of time consuming tasks writing boiler-plate code to connect the frontend and backend.
SolutionsTo work through these issues, I was able to first adopt the Pytest library and tightly integrate in into by development workflow and CI/CD. This allowed myself and contributors to feel confident that the changes that were being made would not break functionality. I also wrote up extensive documentation on deployment and usage of the application. Finally, I utilized code generation through the OpenAPI specification to bootstrap my frontend API client code and speed up development.
Notable Features- User and User Group Support
- JWT Authentication
- Custom Themes
- Mobile Optimized
- Long Live API Tokens
- Fuzzy Search
- Advanced Category/Tag Search Filter
- Deployment Through Docker
- Robust Backup
Controls CoPilot
- Python
- Pandas
- Pytest
- DearPyGui
- Microsoft COM Objects
The primary road-block for this project was the way that the initial data was presented in excel. Essentially, this project takes in a larger excel spreadsheet, breaks it down into specific parts based of a set criteria and calculates network address and name information to be used to generate a database. This was typically done by hand with a excel sheet that was friendly to manual use, but not easily translatable to pandas. There was some additional issues with the source file not being in a modern format and overall performance problems.
SolutionsA key first step was to have an extensive data cleaning process with testing to ensure that the data coming in was properly formatted for effective use with pandas. For the source file I was able to work directly with the Excel COM object to do the conversion on the fly so users could input either .xls or .xlsx files. Initially this was a slow process because it had to rerun for each iteration, but I was able to utilize the @lru_cache decorator to improve performance by nearly 10x.
Notable Features- Packages as an .exe file
- Integrated Documentation
- Log and Error Handling