Skip to main content

Welcome to RovesUp

Overview

RovesUp is a comprehensive platform designed to connect students with job opportunities. Built with a modern microservices architecture, the platform provides robust APIs and services for authentication, student management, company verification, notifications, and AI-powered features.

Platform Components

RovesUp consists of multiple interconnected applications:

  • Student Mobile App: An Expo-based cross-platform mobile application for Android and iOS that allows students to browse job offerings, connect with companies, apply to positions, and chat with potential employers.
  • Company Web Portal: A React-based web application where companies can post job offerings, view student applications, manage their profile, and communicate with matched students.
  • Landing Page: The public-facing website (rovesup.com) that showcases the platform's features and benefits, allowing users to sign up and learn more about the service.

Technical Architecture

The RovesUp platform is built using the following technologies:

  • Frontend:

    • Student App: React Native with Expo framework
    • Company Portal: React.js with Material UI
    • Landing Page: Next.js for server-side rendering and SEO optimization
  • Backend: Node.js with Express and TypeScript

  • Databases:

    • PostgreSQL: For structured relational data, managed through pgAdmin
    • MongoDB: For flexible document storage and rapid development
  • Authentication: OAuth 2.0 with Microsoft Authentication

  • API Design: RESTful APIs with OpenAPI specification

  • Containerization: Docker and Kubernetes for deployment

  • CI/CD: GitLab CI/CD pipelines for continuous integration and deployment

  • AI Services: Anthropic Claude for natural language processing

Microservices Architecture

RovesUp follows a microservices architecture pattern, with the following core services:

  1. Authentication Service: Handles user authentication, authorization, and account management
  2. Student Service: Manages student profiles, academic records, and job applications
  3. Company Service: Manages company profiles, job postings, and applicant tracking
  4. Notification Service: Handles all notifications across the platform
  5. AI Service: Provides AI-powered features for resume analysis and job matching

Each service is independently deployable and communicates with other services through well-defined APIs.

Database Architecture

RovesUp employs a hybrid database approach:

  • PostgreSQL: Used for structured data that requires complex relationships and transactions, such as:

    • User accounts and authentication
    • Company profiles and verification data
    • Job postings and applications
    • Billing and subscription information
  • MongoDB: Used for flexible, schema-less data, such as:

    • Student profiles and resumes
    • Chat messages and notifications
    • AI-generated recommendations
    • Analytics and usage data

Database management is handled through pgAdmin for PostgreSQL and MongoDB Compass for MongoDB, with automated backups and replication for data safety.

API Standards

All RovesUp APIs follow these standards:

  • RESTful design principles
  • JSON for request and response bodies
  • JWT for authentication
  • Consistent error handling
  • Comprehensive documentation with OpenAPI

Getting Started

To get started with the RovesUp platform as a developer, you'll need:

  1. Node.js (v16 or higher)
  2. PostgreSQL and MongoDB
  3. Docker (for local development)
  4. Access to the RovesUp GitLab repository

Installation

# Clone the repository
git clone https://gitlab.com/rovesup/backend.git

# Install dependencies
cd backend
npm install

# Set up environment variables
cp .env.example .env

# Start the development server
npm run dev

API Authentication

All API requests (except for public endpoints) require authentication using a JWT token. To authenticate:

// Example of authenticating with the RovesUp API
import axios from 'axios';

const api = axios.create({
baseURL: 'https://api.rovesup.com',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});

// Make an authenticated request
const response = await api.get('/students/profile');

Next Steps

Explore the documentation for each service to learn more about their specific features and APIs:

Resources