Tech tasks
I co-founded Coup a bit over 3 years ago. Coup helps German startups in receiving public funding (specifically, the "Forschungszulage") to offset their R&D expenses. We do so using a "hybrid approach": For one, we are building a bespoke software solution, which supports customers throughout the funding process, from gathering input for the initial funding application, to documenting yearly expanses. In addition, we have a team of R&D Consultants, who have long experience in acquiring funding, and are domain experts in many of our customers' technologies. Our consulting processes are tightly integrated with our software.
In developing Coup's software, we spend the majority of our time on typical "web development". We build user interfaces in HTML & CSS, in our case with the help of Next.js/React and Tailwind, and backed by the Google Cloud. However, to actually support all of our app's features and a (hopefully) efficient development process, we have to perform many additional tasks, and build many more capabilities.
From the top of my head, they include:
- Setup dedicated
dev
andproduction
environments - Define deployment scripts for our serverless backend
- Build custom daily database backups
- Build a CI/CD pipeline
- Integrate automatic versioning into the CI/CD pipeline
- Build a mechanism to detect and react to outdated versions of our software (to ensure customers run the latest version of our software, even if they didn't restart the browser in months)
- Build a custom process to perform database migrations "safely"
- Build custom full-text search capabilities on-top of a database that doesn't offer it
- Securely handle secrets (like API keys)
- Extend the Next.js build process that allows to incorporate dynamically fetched data
- Write & operationalise E2E tests
- Integrate a payments provider
- Integrate SaaS solutions used by our customers to sync data
- Integrate with Slack
- Integrate with Google Docs & Google Sheets
- Integrate with a Content Management System
- Build custom Web crawlers
- Build mechanisms to generate PDFs with dynamic content
- Build mechanisms to extract data from customer-provided PDFs
- Build file upload capabilities
- Build templated email notifications
- Build a custom authentication flow
- Build internationalization of public website
- Enable collaborative form editing in real-time (though within limits)
- Build scheduled exports of data for analysis
- Integrate web analytics
- Integrate error tracking
- Ensure adhering to cookie consent choices of users
- Build scripts for data analysis
- Build scripts for fetching assets during the build process (like public holidays)
- Define, regularly review, and enact "Technisch organisatorische Maßnahmen (TOM)" (technical and organizational matters to ensure proper handling of customer data)
- Define and maintain data processing agreements
(...and more...)
It's quite a list. And while, cynically, our software could be considered "a glorified form", this list hints at the complexity involved to even build that.