Lin / SETUP_GUIDE.md
Zelyanoth's picture
fff
25f22bf
# Lin - Comprehensive Setup Guide
This guide provides step-by-step instructions for setting up the Lin application on different operating systems.
## πŸ“‹ Table of Contents
1. [Prerequisites](#prerequisites)
2. [Quick Setup](#quick-setup)
3. [Detailed Setup Process](#detailed-setup-process)
4. [Environment Configuration](#environment-configuration)
5. [Development Workflow](#development-workflow)
6. [Troubleshooting](#troubleshooting)
7. [Platform-Specific Instructions](#platform-specific-instructions)
## πŸš€ Prerequisites
Before you begin, ensure you have the following installed:
### System Requirements
- **Operating System**: Windows 10/11, macOS 10.14+, or Linux (Ubuntu 18.04+)
- **RAM**: 4GB minimum, 8GB recommended
- **Storage**: 1GB free space
- **Internet Connection**: Required for downloading dependencies
### Software Requirements
- **Node.js**: v16.0.0 or higher
- **npm**: v8.0.0 or higher
- **Python**: v3.8.0 or higher
- **Git**: v2.0.0 or higher (for cloning the repository)
### Verification Commands
**Windows Command Prompt:**
```cmd
# Check Node.js
node --version
# Check npm
npm --version
# Check Python
python --version
# Check Git
git --version
```
**Windows PowerShell:**
```powershell
# Check Node.js
node --version
# Check npm
npm --version
# Check Python
python --version
# Check Git
git --version
```
**Linux/macOS:**
```bash
# Check Node.js
node --version
# Check npm
npm --version
# Check Python
python3 --version
# Check Git
git --version
```
## πŸš€ Quick Setup
### Option 1: Automated Setup (Recommended)
```bash
# Clone the repository
git clone <repository-url>
cd Lin
# Run automated setup
npm run setup
```
### Option 2: Manual Setup
```bash
# Clone the repository
git clone <repository-url>
cd Lin
# Install dependencies
npm install
# Setup environment files
npm run setup:env
# Build the project
npm run build
```
## πŸ”§ Detailed Setup Process
### Step 1: Clone the Repository
```bash
# Clone using HTTPS
git clone https://github.com/your-username/lin.git
# Or clone using SSH
git clone git@github.com:your-username/lin.git
# Navigate to the project directory
cd lin
```
### Step 2: Install Dependencies
```bash
# Install root dependencies
npm install
# Install frontend dependencies
npm run install:frontend
# Install backend dependencies
npm run install:backend
```
### Step 3: Configure Environment Variables
#### Frontend Configuration
```bash
# Navigate to frontend directory
cd frontend
# Copy environment template
cp .env.example .env.local
# Edit the environment file
# Open .env.local in your preferred editor
```
**Frontend Environment Variables (.env.local):**
```env
# API Configuration
REACT_APP_API_URL=http://localhost:5000
REACT_APP_ENVIRONMENT=development
# Optional: Custom configuration
REACT_APP_APP_NAME=Lin
REACT_APP_APP_VERSION=1.0.0
```
#### Backend Configuration
```bash
# Navigate to backend directory
cd ../backend
# Copy environment template
cp .env.example .env
# Edit the environment file
# Open .env in your preferred editor
```
**Backend Environment Variables (.env):**
```env
# Supabase Configuration
SUPABASE_URL=your_supabase_project_url
SUPABASE_KEY=your_supabase_api_key
# LinkedIn OAuth Configuration
CLIENT_ID=your_linkedin_client_id
CLIENT_SECRET=your_linkedin_client_secret
REDIRECT_URL=http://localhost:5000/api/auth/callback
# AI/ML Configuration
HUGGING_KEY=your_huggingface_api_key
# Security Configuration
JWT_SECRET_KEY=your_jwt_secret_key
SECRET_KEY=your_flask_secret_key
# Application Configuration
DEBUG=True
SCHEDULER_ENABLED=True
PORT=5000
```
### Step 4: Build the Project
```bash
# Navigate back to root directory
cd ..
# Build frontend for production
npm run build
```
### Step 5: Verify Installation
```bash
# Run tests
npm test
# Check linting
npm run lint
# Verify build
npm run preview
```
## 🌐 Environment Configuration
### Development Environment
```bash
# Start development servers
npm run dev:all
# Or start individually
npm run dev:frontend # Frontend: http://localhost:3000
npm run dev:backend # Backend: http://localhost:5000
```
### Production Environment
```bash
# Build for production
npm run build:prod
# Start production servers
npm run start:prod
```
### Environment-Specific Configuration
#### Development
- Frontend runs on http://localhost:3000
- Backend API runs on http://localhost:5000
- Hot reload enabled
- Debug logging enabled
#### Production
- Frontend built to static files
- Backend runs with optimized settings
- Debug logging disabled
- Error handling optimized
## πŸ› οΈ Development Workflow
### Daily Development
1. **Start the Development Environment**
```bash
npm run dev:all
```
2. **Make Changes to Code**
- Frontend changes are automatically hot-reloaded
- Backend changes require restart
3. **Test Changes**
```bash
# Run specific tests
npm test
# Run linting
npm run lint
# Fix linting issues
npm run lint:fix
```
4. **Commit Changes**
```bash
git add .
git commit -m "Descriptive commit message"
git push
```
### Building for Production
1. **Clean Previous Builds**
```bash
npm run clean
```
2. **Build for Production**
```bash
npm run build:prod
```
3. **Test Production Build**
```bash
npm run preview
```
4. **Deploy**
```bash
# Deploy to your preferred hosting platform
npm run deploy
```
### Common Development Tasks
#### Adding New Dependencies
```bash
# Add frontend dependency
cd frontend
npm install package-name
# Add backend dependency
cd ../backend
pip install package-name
```
#### Updating Dependencies
```bash
# Update frontend dependencies
cd frontend
npm update
# Update backend dependencies
cd ../backend
pip install --upgrade package-name
```
#### Database Migrations
```bash
# Run database migrations
cd backend
flask db upgrade
```
## πŸ” Troubleshooting
### Common Issues and Solutions
#### 1. ENOENT Error: no such file or directory
**Problem**: Running npm commands from the wrong directory
**Solution**: Always run npm commands from the project root directory
```bash
# Verify you're in the correct directory
pwd # Linux/macOS
cd # Windows (shows current directory)
# List files to confirm package.json exists
ls package.json # Linux/macOS
dir package.json # Windows
```
#### 2. Port Already in Use
**Problem**: Port 3000 or 5000 is already occupied
**Solution**: Find and stop the process using the port
**Windows Command Prompt:**
```cmd
# Find process using port 3000
netstat -ano | findstr :3000
# Find process using port 5000
netstat -ano | findstr :5000
# Kill process (replace PID with actual process ID)
taskkill /F /PID <PID>
```
**Windows PowerShell:**
```powershell
# Find process using port 3000
netstat -ano | Select-String ":3000"
# Find process using port 5000
netstat -ano | Select-String ":5000"
# Kill process (replace PID with actual process ID)
Stop-Process -Id <PID> -Force
```
**Linux/macOS:**
```bash
# Find process using port 3000
lsof -i :3000
# Find process using port 5000
lsof -i :5000
# Kill process (replace PID with actual process ID)
kill -9 <PID>
```
#### 3. Python/Node.js Not Recognized
**Problem**: Command not found errors
**Solution**: Add Python and Node.js to system PATH
**Windows:**
1. Press `Win + R` and type `sysdm.cpl`
2. Go to "Advanced" tab > "Environment Variables"
3. Under "System variables", edit "Path"
4. Add paths to Python and Node.js installation directories
5. Restart your terminal
**Linux (Ubuntu/Debian):**
```bash
# Add to ~/.bashrc or ~/.zshrc
echo 'export PATH=$PATH:/path/to/python' >> ~/.bashrc
echo 'export PATH=$PATH:/path/to/node' >> ~/.bashrc
source ~/.bashrc
```
**macOS:**
```bash
# Add to ~/.zshrc or ~/.bash_profile
echo 'export PATH=$PATH:/path/to/python' >> ~/.zshrc
echo 'export PATH=$PATH:/path/to/node' >> ~/.zshrc
source ~/.zshrc
```
#### 4. Permission Denied Errors
**Problem**: Permission issues when installing dependencies
**Solution**: Run with proper permissions or use package managers
**Windows:**
```cmd
# Run as Administrator
# Or check file permissions
```
**Linux/macOS:**
```bash
# Fix permissions
chmod -R 755 node_modules
chmod -R 755 backend/venv
```
#### 5. Environment Variable Issues
**Problem**: Environment variables not loading
**Solution**: Verify file paths and permissions
**Windows Command Prompt:**
```cmd
# Check if environment files exist
if exist frontend\.env.local (
echo Frontend environment file exists
) else (
echo Frontend environment file missing
)
if exist backend\.env (
echo Backend environment file exists
) else (
echo Backend environment file missing
)
```
**Windows PowerShell:**
```powershell
# Check if environment files exist
if (Test-Path frontend\.env.local) {
Write-Host "Frontend environment file exists" -ForegroundColor Green
} else {
Write-Host "Frontend environment file missing" -ForegroundColor Red
}
if (Test-Path backend\.env) {
Write-Host "Backend environment file exists" -ForegroundColor Green
} else {
Write-Host "Backend environment file missing" -ForegroundColor Red
}
```
## πŸ–₯️ Platform-Specific Instructions
### Windows Setup
#### Prerequisites Installation
1. **Download Node.js**: Visit https://nodejs.org and download the LTS version
2. **Download Python**: Visit https://python.org and download Python 3.8+
3. **Install Git**: Download from https://git-scm.com
#### Environment Setup
```cmd
# Command Prompt setup
copy frontend\.env.example frontend\.env.local
copy backend\.env.example backend\.env
# PowerShell setup
Copy-Item frontend\.env.example -Destination frontend\.env.local
Copy-Item backend\.env.example -Destination backend\.env
```
#### Development Commands
```cmd
# Install dependencies
npm install
npm run install:all:win
# Start development
npm run dev:all
# Build project
npm run build
```
### macOS Setup
#### Prerequisites Installation
```bash
# Install using Homebrew
brew install node
brew install python
brew install git
# Or download from official websites
```
#### Environment Setup
```bash
# Copy environment files
cp frontend/.env.example frontend/.env.local
cp backend/.env.example backend/.env
# Set permissions
chmod 600 frontend/.env.local
chmod 600 backend/.env
```
#### Development Commands
```bash
# Install dependencies
npm install
npm run install:all
# Start development
npm run dev:all
# Build project
npm run build
```
### Linux Setup
#### Prerequisites Installation
```bash
# Ubuntu/Debian
sudo apt update
sudo apt install nodejs npm python3 python3-pip git
# CentOS/RHEL
sudo yum install nodejs npm python3 python3-pip git
# Arch Linux
sudo pacman -S nodejs npm python python-pip git
```
#### Environment Setup
```bash
# Copy environment files
cp frontend/.env.example frontend/.env.local
cp backend/.env.example backend/.env
# Set permissions
chmod 600 frontend/.env.local
chmod 600 backend/.env
```
#### Development Commands
```bash
# Install dependencies
npm install
npm run install:all
# Start development
npm run dev:all
# Build project
npm run build
```
## πŸ“š Additional Resources
- [API Documentation](./backend/README.md)
- [Frontend Development Guide](./frontend/README.md)
- [Windows Compatibility Guide](./test_windows_compatibility.md)
- [Troubleshooting Guide](./TROUBLESHOOTING.md)
- [Contributing Guidelines](./CONTRIBUTING.md)
## πŸ†˜ Getting Help
If you encounter issues not covered in this guide:
1. Check the [Troubleshooting Guide](./TROUBLESHOOTING.md)
2. Search existing [GitHub Issues](https://github.com/your-username/lin/issues)
3. Create a new issue with:
- Operating system and version
- Node.js and Python versions
- Error messages and stack traces
- Steps to reproduce the issue
## 🎯 Next Steps
After completing the setup:
1. **Explore the Application**: Navigate to http://localhost:3000
2. **Read the Documentation**: Check the API documentation and user guides
3. **Join the Community**: Join our Discord server or mailing list
4. **Start Contributing**: Check out the contributing guidelines
Happy coding! πŸš€