Technical Requirements

"Simply put, the difference is that non-functional (technical) requirements describe how the system works, while functional requirements describe what the system should do."


So let's define our requirements. The list below may contain also some functional requirements that affects architecture or design.


Time Tracker users don't want to lose their data and the app will be used as a live Seed example, so:

  1. The app should be available worldwide without limitations and ideally with the same performance and latency.

  2. The hosting should be free or very cheap.

  3. The app content (labels, images, etc.; not user data) may be hard-coded - English would be the only language. (See the example i18n when you need to support more languages.)

  4. The app should be reliable to not disrupt user work - especially while the user is tracking time.

  5. User data have to be stored securely and reliably.

  6. SEO is not important - we don't need prerendering or server-side rendering.

    • If you want to prerender your app as a build step, you can use Seed Webpack quickstart (or Seeder in the future).
    • Note: Seed SSR is planned, but it's not a priority now.
  7. The app don't have to respect all accessibility best practices - we assume that the most of users will be developers without disabilities and accessibility itself is out-of-scope of this tutorial.

  8. We don't have to use any existing backend.

  9. We don't have to follow any branding guidelines or design systems.

  10. The maintenance should be as easy as possible. We don't want to care about servers, hosting, regular updates, etc.

  11. The responsive GUI would be nice, but it's not the top priority.

  12. We don't want to integrate a cookie banner. The app should use only strictly necessary cookies.

  13. We expect that users won't create many entities and that the traffic amount won't be very high. However scalability would be nice.

  14. We don't need any realtime communication. It means we don't have to integrate something like WebSockets or Server-sent events.

  15. We don't have to support old or "exotic" browsers.

  16. We don't need to support "offline mode" (The app is usable even without internet connection). However it would be a reasonable future requirement for the time tracking app - then we should look also at Progressive Web Apps and their builders like Woz.

  17. We can use external managed services (identity providers, mail senders, databases, ...)

  18. We don't want to register a custom domain. Something like time-tracker.static_site_hosting.com would be enough.


Let's move to architecture before we forget all specifications and requirements...