Getting Started
Welcome to the Unisync documentation! This guide will help you get started with the project.
What is Unisync?
Unisync is a full-stack application consisting of a mobile app (iOS/Android), REST API server, and GraphQL backend powered by Hasura.
Architecture Overview
The Unisync project consists of the following components:
Server (REST API)
- Technology: Node.js with Express and TypeScript
- Port: 9201
- Features:
- OTP authentication (send and verify)
- Guest token generation
- JWT refresh token management
- Hasura webhook authorization
- Rate limiting
- Error tracking with Sentry
- Logging with Winston
Mobile App
- Framework: React Native with Expo
- Platforms: iOS and Android
- UI Library: React Native Paper
- Navigation: Expo Router
- GraphQL Client: Apollo Client
- Features: Home, Schedule, Tasks, Announcements, Account screens
Hasura (GraphQL Engine)
- Port: 9203
- Admin Console: http://localhost:9203/console (admin secret:
123) - Features:
- GraphQL API with PostgreSQL
- Authentication via webhook to server
- Database migrations and metadata management
PostgreSQL Database
- Port: 9200
- Database Name: unisync
- Schemas:
user: User sessionsplatform: OTP transactions and rate limitingsettings: Application configuration
Prerequisites
Before you begin, make sure you have the following installed:
- Node.js (v18 or higher)
- Yarn package manager
- Docker and Docker Compose
- Xcode (for iOS development)
- Android Studio (for Android development)
Key Documentation
Installation & Setup
- Installation Guide - Complete setup instructions
- Provider Configuration - Configure SMS/Email OTP providers
API & Authentication
- Authentication Guide - JWT and OTP authentication flows
- API Reference - Complete REST and GraphQL API documentation
Next Steps
- Install and configure the backend services
- Set up SMS provider for OTP delivery
- Review the authentication flow documentation