Nowadays create new company, project, product is quite simple and first steps can be done very quickly. Usually when people got an idea in their mind and very exciting about make this idea real come to the point of MVP – Minimum Viable Product.
MVP helps to touch first sample of product, test the idea in real world, show it to someone (investors, potential customers, etc.) and gather early feedback usually without big financial expenses. There a lot of materials in public Internet how to create MVP from your idea, which key points you must keep but here I’ll talk about technical part of MVP and specifically related to Software + Hardware product.
MVP technical key points
- It should be as cheap as it can be (ideally free by money, only your own time spending)
- It must use tools, components, modules, frameworks which can provide desire quality with low efforts and be very flexible
- Development process must be agile with short iterations, end of each must test your idea in some real scenarios
- Libraries must be open sources and with free for commercial licenses
- Each element in the system must be simplified as much as it possible (when project start growing you can hire not very expensive engineers to help you with development)
- There are must be automatic Quality Control system (at least Unit tests)
Example of MVP tech stack for “Track my time” project
Lets imagine we have crazy good idea of time tracker mobile application. We want implement simple task creation process, task stop, resume, statistic of past tasks (how many are done, in progress, not start yet, how long time it took to make a task, what is average time spend of the task or grouped by some tags tasks). All data should be synchronized between all devices of account owner and one nice feature – share finished tasks on social media.
On this point we already see that on the market bigger part occupied by Android and iOS mobiles so need to decide what to support and if we need native apps or there is enough hybrid.
Native application – program which compiled into binary/byte code for specific platform, usually bind to some languages: Java/Kotlin for Android and Objective-C/Swift for iOS. Native apps have better performance and access to all available/permitted resources of the device but required more specialized programmers and in most cases a way more expensive then hybrid.
Hybrid application – web applications which run in native browsers on the devices, have limited access to the resources through bridges, can be cross platform and language agnostic, usually requires only knowledge in web page development. Very easy to start, all available platforms potentially can run one code, so development and maintenance may be done by one person.
My own prefers for MVP is develop hybrid applications and only after MVP tested and project started to grow then switch to native (and this is only if hybrid can not cover needs).
We have a lot of hybrid frameworks, some of them free (Ionic Framework, Flutter), some of them claimed to compile into native (Xamarin, React Native, Native Script) but they provide relatively simpler way to develop compare to native app. Most of mobile apps I’ve developed based on Ionic Framework, so far it really covered all my needs and for this sample application it has plenty of plugins and UI components, so can quickly develop something.
In few days possible to make mobile app design (you can use Adobe XD or Figma or anything what you prefer) and create hybrid mobile application with few screens (from standard UI components).
Finally we come to backend part, here everything also varying a lot, you can use Python, JS, TypeScript, Java, Kotlin, Go, etc. languages and each of the language has many frameworks and libraries. For my own prefers I would start backend part with Kotlin, based on Spring Boot.
It does not really matter (for this application) which DB we choose, it can be SQL or NoSQL, any you personally feel comfortable and have experience. And for MVP I would expect up to 1000 users (if there will be quick jump backend most probably will be down, but for this app I would not expect such situation). Server which can run backend project I would rent for around 30 EUR per month.
Very important is to setup correctly infrastructure (CI/CD, CVS, backups, Metrics and Alerts) – it’ll make your development process fast and flexible, any outages or failure will be alerted and developers can fix ASAP.
Cheapest pricing for MVC
- Domain name: 15 EUR/year
- VPS: 30 EUR/month
- Hybrid mobile application: 300-600 EUR
- Server application: 300-1000 EUR
- Infrastructure: 200-500 EUR
So, if MVP does not require any custom component, use hybrid technology, on backend side implemented simple CRUD then price of MVP could be less then 700 EUR and time is 1 week (+ up to 3 days for iOS app release to App Store).