International calling app using Twilio to make affordable calls from the USA to Kenya.
# FlexCalling
International calling app using Twilio to make affordable calls from the USA to Kenya.
## π Table of Contents
- Features
- Tech Stack
- Prerequisites
- Installation
- Configuration
- Running the Application
- Testing
- Project Structure
- API Documentation
- Contributing
- License
## β¨ Features
- π± Make international calls from USA to Kenya at affordable rates
- π€ User authentication and authorization
- π Contact management
- π Call history and tracking
- π° Transparent pricing ($0.05/minute to Kenya)
- π Secure token-based authentication
- π± Cross-platform mobile app (iOS & Android) using Expo
- π― Rate limiting and security middleware
- π Comprehensive logging system
## π Tech Stack
### Backend
- **Node.js** with **Express** - REST API
- **TypeScript** - Type safety
- **Prisma** - Database ORM
- **PostgreSQL** - Database
- **Twilio** - Voice calling infrastructure
- **JWT** - Authentication
- **Jest** - Testing framework
### Frontend
- **React Native** with **Expo** - Mobile app framework
- **Expo Router** - Navigation
- **TypeScript** - Type safety
- **Async Storage** - Local data persistence
- **Expo Secure Store** - Secure credentials storage
## π¦ Prerequisites
Before you begin, ensure you have the following installed:
- **Node.js** (v18 or higher)
- **npm** or **yarn**
- **PostgreSQL** (v14 or higher) or **Docker**
- **Twilio Account** - Sign up here
- **Expo CLI** (optional, but recommended for mobile development)
## π Installation
### 1. Clone the repository
```bash
git clone
github.com
cd FlexCalling
```
### 2. Install dependencies
```bash
# Install all dependencies (root, server, and client)
npm run install:all
# Or install individually
npm install # Root dependencies
cd server && npm install # Server dependencies
cd client && npm install # Client dependencies
```
## βοΈ Configuration
### Server Configuration
1. Navigate to the server directory:
```bash
cd server
```
2. C β¦