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​