KEMBAR78
Tech Stack and File Structure | PDF | Databases | Software
0% found this document useful (0 votes)
1 views3 pages

Tech Stack and File Structure

Uploaded by

gracejamu4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views3 pages

Tech Stack and File Structure

Uploaded by

gracejamu4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Frontend Tech Stack

Core Framework

 Next.js 14+: We are using the latest version of Next.js, which introduces the App Router. This
provides a modern, file-based routing system with support for React Server Components,
streaming, and more.

 TypeScript: We use TypeScript for static type checking, which helps in catching errors early and
improving code quality.

 React 18: The UI library we use is React, and we are leveraging the latest features of React 18.

Styling & UI Components

 Tailwind CSS: A utility-first CSS framework that allows us to style our application quickly and
consistently.

 shadcn/ui: A collection of reusable UI components built on top of Radix UI and styled with
Tailwind CSS. We use this for consistent and accessible UI elements.

 Radix UI: Provides unstyled, accessible UI components that we build upon with shadcn/ui.

 CSS Modules: For component-scoped styles when needed.

State Management

 Zustand: A lightweight state management solution. We use it for global state that needs to be
shared across multiple components.

 React Context: For state that is local to a part of the component tree and doesn't need to be
global.

Authentication

 NextAuth.js: A complete authentication library for Next.js. We use it to handle OAuth2 flows,
session management, and JWT.

 JWT (JSON Web Tokens): We use JWT for securing our API and maintaining user sessions.

Form Handling

 React Hook Form: A library for efficient form validation and submission.

 Zod: A schema declaration and validation library. We use it to define our form validation
schemas.

 @hookform/resolvers: To integrate Zod with React Hook Form.

API Communication

 Axios/Fetch API: We use either Axios or the native Fetch API to communicate with our backend.
We have an API client configured with interceptors for handling auth tokens and errors.
 SWR/React Query: We might use one of these libraries for data fetching, caching, and
synchronization (optional, but recommended for complex data fetching).

Development Tools

 ESLint: For code linting and maintaining code quality.

 Prettier: For code formatting.

 TypeScript: For type checking.

Backend Tech Stack

Core Framework

 Flask: A micro web framework for Python. We use it to build our RESTful API.

 Python 3.9+: We are using modern Python features.

Database & ORM

 SQLAlchemy: An ORM (Object Relational Mapper) for Python. We use it to interact with our
database in an object-oriented way.

 Alembic: A database migration tool that works with SQLAlchemy. We use it to manage changes
to our database schema.

 SQLite: We use SQLite for development, but we can switch to PostgreSQL or MySQL for
production.

Authentication & Security

 Flask-JWT-Extended: An extension for Flask that adds JWT support. We use it to create and
verify JWT tokens.

 Authlib: A library for OAuth2 client and server implementation. We use it for OAuth2 flows.

 bcrypt: A library for hashing passwords. We use it to securely store user passwords.

 python-dotenv: To load environment variables from a .env file.

API Development

 Flask-RESTful: An extension for Flask that helps in building REST APIs (optional, we can also use
plain Flask views).

 Flask-CORS: To handle Cross-Origin Resource Sharing, allowing our frontend to communicate


with the backend.

 Marshmallow/Pydantic: We use one of these for data serialization and validation. Marshmallow
is more common in Flask, but Pydantic is also an option.

Additional Extensions
 Flask-Migrate: An extension that handles SQLAlchemy migrations using Alembic. It integrates
with Flask and provides command-line tools.

 Flask-SQLAlchemy: An extension that integrates SQLAlchemy with Flask, providing patterns and
utilities for working with the database.

 Flask-Mail: For sending emails (for notifications, password reset, etc.).

Testing

 pytest: A testing framework for Python. We use it to write and run tests.

 unittest: Python's built-in testing framework, which can also be used.

Database Schema (Key Entities)

We have the following main models:

 User: A base model for all users. We use polymorphic inheritance to have two types of users:
Student and Admin.

 Student: A user who is a student. They can be assigned to projects.

 Admin: A user who is an administrator. They can create projects, courses, and evaluate projects.

 Project: Represents a project that students work on. It belongs to a course and can have
multiple evaluations.

 Evaluation: Represents an evaluation of a project. It contains multiple marks (criteria) and is


done by an admin.

 Course: Represents a course that contains multiple projects.

FILE STRUCTURE (LINK

https://claude.ai/public/artifacts/6509161d-4cd8-4ad9-93b3-36efa24fa50e

You might also like