Frameworks and Libraries - SoenCapstone/GameOn GitHub Wiki

Key Libraries and Frameworks

This section outlines the major backend and frontend libraries used in the GameOn platform, explaining their purpose and role within the system.
Each library or framework was selected to improve scalability, maintainability, and development efficiency across all microservices and the mobile frontend.


Backend Libraries

  • spring-boot-starter-web β€” Provides RESTful API functionality, embedded Tomcat server, and core web capabilities for each microservice.
  • spring-boot-starter-data-jpa β€” Simplifies data persistence through Hibernate ORM, enabling CRUD operations and entity mapping with minimal boilerplate.
  • spring-boot-starter-data-jdbc β€” Used in services that require lightweight JDBC access without full JPA overhead.
  • spring-boot-starter-validation β€” Adds validation support using Java Bean Validation (JSR-380) annotations to enforce data integrity.
  • spring-boot-starter-actuator β€” Exposes monitoring endpoints for health checks, metrics, and performance tracking of microservices.
  • spring-cloud-starter-config β€” Enables centralized external configuration across all microservices using the Config Server.
  • spring-cloud-starter-netflix-eureka-client β€” Handles service registration and discovery, allowing services to dynamically locate one another.
  • spring-cloud-starter-openfeign β€” Simplifies inter-service communication through declarative REST clients.
  • spring-boot-starter-oauth2-client and spring-boot-starter-oauth2-resource-server β€” Provide OAuth2 client and resource server functionality for integrating with Clerk authentication.
  • spring-dotenv (v4.0.0) β€” Loads environment variables from .env files for flexible configuration in development and testing.
  • flyway-core (v11.13.2) β€” Manages database schema migrations and ensures version consistency across environments.
  • Lombok (v1.18.34) β€” Reduces boilerplate code by automatically generating getters, setters, constructors, and builders.
  • PostgreSQL Driver β€” Connects Spring Data JPA to the PostgreSQL database at runtime.
  • JUnit 5 / Mockito / H2 β€” Support testing, mocking dependencies, and running lightweight in-memory databases for isolated test cases.

Frontend Libraries

  • @clerk/clerk-expo (v2.17.3) β€” Handles user authentication, registration, and session management through Clerk’s secure API.
  • React / React Native / Expo SDK 54 β€” The foundation of the frontend, providing cross-platform native UI components for Android and iOS.
  • @react-navigation/native, @react-navigation/bottom-tabs, @react-navigation/elements β€” Implement navigation stacks and tab-based layouts for a consistent user flow.
  • Axios (v1.13.1) β€” Manages HTTP communication between the React Native frontend and backend microservices.
  • @tanstack/react-query (v5.90.5) β€” Handles API caching, background synchronization, and server state management for optimized performance.
  • Formik + Yup β€” Manage form state and validation logic for user input handling and error management.
  • expo-secure-store and @react-native-async-storage/async-storage β€” Provide local and secure storage for sensitive data such as authentication tokens.
  • expo-linear-gradient, expo-glass-effect, and @expo/vector-icons β€” Used for UI enhancements, styling, and smooth visual effects.
  • @react-native-community/datetimepicker and @react-native-picker/picker β€” Offer native-feeling input components for selecting dates and options.
  • @expo/haptics and expo-system-ui β€” Add tactile feedback and consistent theming across devices.
  • Jest / @testing-library/react-native / @testing-library/jest-native β€” Used for automated unit and integration testing of frontend components.
  • prettier and eslint / eslint-config-expo β€” Maintain code style consistency and enforce linting rules throughout the codebase.

Reference