|
# 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! π |