# Framework selection for the next generation of GNUKhata

**URL:** https://metastudio.org/t/framework-selection-for-the-next-generation-of-gnukhata/15914
**Category:** GNUKhata
**Created:** [October 30, 2025, 5:59am UTC](https://metastudio.org/t/framework-selection-for-the-next-generation-of-gnukhata/15914 "2025-10-30T05:59:39Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![bady](https://metastudio.org/letter_avatar_proxy/v4/letter/b/df788c/32.png) [@bady](https://metastudio.org/u/bady)
#### Post date: [October 30, 2025, 5:59am UTC](https://metastudio.org/t/framework-selection-for-the-next-generation-of-gnukhata/15914/1 "2025-10-30T05:59:39Z")

</div>

For developing the next generation of GNUKhata, one of the first steps is to decide which frameworks to pick. We need to pick frameworks for backend, frontend, ORM, authentication, role based access control. From the past experiences, we have formulated a few parameters and a couple of mandatory requirements to decide which frameworks to pick. The framework(s) should,

- be matured, with enough community support and sustained contributions
- support working with a portable data storage like SQLite
- support encrypted storage and secure transfer of data
- support REST API and have open API doc support
- mobile friendly
- be easy to package and deploy
- scalable

With the above conditions, we have decided to go with Node.js frameworks for backend and frontend. The selected frameworks are,

Backend: [Fastify](https://fastify.dev/)  
ORM: [Prisma](https://www.prisma.io/) / [Drizzle](https://orm.drizzle.team/)  
Auth: [Passport](https://www.passportjs.org/) / [Lucia](https://lucia-auth.com/)  
RBAC: [CASL](https://casl.js.org/v6/en/)  
Frontend: [Vite](https://vite.dev/) + [Vue](https://vuejs.org/)
