Platform Selection
General Information:
- Programming Language: Typescript
- Client-server system
- Web application – should be compatible with any OS with web browsers
Client Requirements:
- Client’s programmer has used Node.js and Express.js and would prefer for the team to use the same for easier integration
Selected platforms are italicized.
Frontend/UI
- Angular
- Pros:
- More familiarity among teammates
- Is a full MVC framework that doesn’t rely on other technologies
- Cons:
- Possibly slow performance
- Large application size
- Pros:
- React
- Pros:
- Performant UI library
- More simplistic development
- Cons:
- Not a full fledged frontend Framework, only accounts for UI components
- Pros:
Backend/API
- Node.js
- Pros:
- Is our clients preferred backend technology
- Can be used with typescript, keeping a consistent programming language
- Has a large existing package ecosystem, including express.js
- ubiquitous
- Cons:
- Slower compared to other js runtimes (bun, deno)
- API not stable
- Pros:
- FastAPI:
- Pros:
- Faster than Express.js
- Clean syntax and fast learning curve
- Cons:
- Uses a different programming language, could cause inconsistencies with frontend
- Team is less familiar with the deployment process of FastAPI
- Typing in Python is weaker than TypeScript, poorly affecting development time
- Pros:
- Express.js
- Pros:
- Minimalistic framework that is easy to learn and use
- Is client’s preferred framework
- Written in JavaScript but compatible with TypeScript which allows for consistency with frontend
- Cons:
- Lack of built-in features may require more boilerplate code or importing dependencies
- Pros:
Database
- Supabase
- Pros:
- Familiarity among backend lead
- Has a strong free tier scheme
- Uses a Postgres database
- Can be used as just a database
- Cons:
- Needs 3rd party hosting of documents
- Pros:
- Firebase
- Pros:
- Has a strong free tier scheme
- Built on a big ecosystem of google add-ons
- Cons:
- Uses noSQL, which is not necessary
- Is less flexible with other options; Would need to use firebase more throughout the stack
- Pros:
ORM
- SQL
- Pros:
- Fast and performant
- Industry standard
- Cons:
- Prone to error
- Typing is not guaranteed in typescript
- Expressive nature of SQL makes it harder to get up to speed
- Database and queries can get out of sync; hard to track down cascading changes
- Pros:
- Prisma
- Pros:
- Easy to learn
- Has powerful typing guarantees, ensuring the database and the types are always in sync
- Allows for raw SQL queries if needed
- Cons:
- Less control over the specifics of a query
- Slower queries
- Pros:
Architecture Diagram
![](https://tarheels.live/comp523fa23teama/wp-content/uploads/sites/4712/2023/12/CollectiveGood-Architecture.png)