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 …