|
# Lin - Community Manager Assistant for LinkedIn |
|
|
|
## Project Overview |
|
|
|
Lin is a comprehensive community management tool designed to help users automate and streamline their LinkedIn activities. The project follows a modern full-stack architecture with: |
|
|
|
- **Frontend**: React application with Vite build system, utilizing Tailwind CSS for styling and Redux for state management |
|
- **Backend**: Flask-based REST API with SQLAlchemy for database operations and Supabase for authentication |
|
- **Key Features**: LinkedIn OAuth integration, content scheduling, post management, and analytics |
|
|
|
## Project Structure |
|
|
|
``` |
|
Lin/ |
|
βββ package.json # Root package.json with combined scripts |
|
βββ frontend/ # React frontend application |
|
β βββ package.json # Frontend-specific dependencies |
|
β βββ src/ # React source code |
|
β βββ public/ # Static assets |
|
β βββ build/ # Build output |
|
βββ backend/ # Flask backend API |
|
β βββ app.py # Main application file |
|
β βββ requirements.txt # Python dependencies |
|
β βββ api/ # API endpoints |
|
β βββ models/ # Data models |
|
β βββ scheduler/ # APScheduler service |
|
β βββ services/ # Business logic |
|
β βββ utils/ # Utility functions |
|
βββ README.md # Project documentation |
|
``` |
|
|
|
## Building and Running |
|
|
|
### Prerequisites |
|
|
|
- Node.js (v16 or higher) |
|
- Python (v3.8 or higher) |
|
- npm (v8 or higher) |
|
|
|
### Installation |
|
|
|
**Option 1: Using the root package.json (Recommended)** |
|
|
|
```bash |
|
# Install all dependencies |
|
npm install |
|
|
|
# Setup the project |
|
npm run setup |
|
|
|
# Start both frontend and backend |
|
npm start |
|
``` |
|
|
|
**Option 2: Manual installation** |
|
|
|
```bash |
|
# Install frontend dependencies |
|
cd frontend |
|
npm install |
|
|
|
# Install backend dependencies |
|
cd ../backend |
|
pip install -r requirements.txt |
|
``` |
|
|
|
### Development Servers |
|
|
|
- `npm run dev:frontend` - Start frontend development server |
|
- `npm run dev:backend` - Start backend development server |
|
- `npm run dev:all` - Start both servers concurrently |
|
- `npm start` - Alias for `npm run dev:all` |
|
|
|
### Build & Test |
|
|
|
- `npm run build` - Build frontend for production |
|
- `npm run preview` - Preview production build |
|
- `npm run test` - Run frontend tests |
|
- `npm run test:backend` - Run backend tests |
|
- `npm run lint` - Run ESLint |
|
- `npm run lint:fix` - Fix ESLint issues |
|
|
|
## Development Conventions |
|
|
|
### Frontend |
|
|
|
- Built with React and Vite |
|
- Uses Tailwind CSS for styling |
|
- Implements Redux for state management |
|
- Follows responsive design principles with mobile-first approach |
|
- Uses React Router for navigation |
|
- Implements proper error boundaries and loading states |
|
|
|
### Backend |
|
|
|
- Built with Flask |
|
- Uses Supabase for authentication and database |
|
- Implements JWT for token-based authentication |
|
- Uses SQLAlchemy for database operations |
|
- Uses APScheduler for task scheduling |
|
- Follows REST API design principles |
|
|
|
### UI Components |
|
|
|
The application features several key UI components: |
|
|
|
1. **Header**: Contains the application logo and user profile/logout functionality |
|
2. **Sidebar**: Navigation menu with links to different sections of the app |
|
3. **Responsive Design**: Adapts to different screen sizes with special handling for mobile devices |
|
|
|
### Key Features |
|
|
|
1. **Authentication**: Login and registration functionality with JWT tokens |
|
2. **LinkedIn Integration**: OAuth integration for connecting LinkedIn accounts |
|
3. **Content Management**: Create, edit, and schedule posts |
|
4. **Automated Scheduling**: Uses APScheduler for reliable task scheduling |
|
5. **Analytics**: Dashboard with overview and analytics |
|
6. **Responsive UI**: Mobile-friendly design with optimized touch interactions |
|
|
|
## Environment Setup |
|
|
|
### Frontend Environment |
|
|
|
```bash |
|
# Copy environment file |
|
cd frontend |
|
cp .env.example .env.local |
|
|
|
# Edit environment variables |
|
# Open .env.local and add your required values |
|
``` |
|
|
|
**Required Frontend Variables**: |
|
- `REACT_APP_API_URL` - Backend API URL (default: http://localhost:5000) |
|
|
|
### Backend Environment |
|
|
|
```bash |
|
# Copy environment file |
|
cd backend |
|
cp .env.example .env |
|
|
|
# Edit environment variables |
|
# Open .env and add your required values |
|
``` |
|
|
|
**Required Backend Variables**: |
|
- `SUPABASE_URL` - Your Supabase project URL |
|
- `SUPABASE_KEY` - Your Supabase API key |
|
- `CLIENT_ID` - LinkedIn OAuth client ID |
|
- `CLIENT_SECRET` - LinkedIn OAuth client secret |
|
- `REDIRECT_URL` - LinkedIn OAuth redirect URL |
|
- `HUGGING_KEY` - Hugging Face API key |
|
- `JWT_SECRET_KEY` - Secret key for JWT token generation |
|
- `SECRET_KEY` - Flask secret key |
|
- `DEBUG` - Debug mode (True/False) |
|
- `SCHEDULER_ENABLED` - Enable/disable APScheduler (True/False) |
|
- `PORT` - Port to run the application on (default: 5000) |
|
|
|
## Scheduler Documentation |
|
|
|
For detailed information about the APScheduler implementation, see: |
|
- `APSCHEDULER_SETUP.md` - Complete setup and usage guide |
|
- `MIGRATION_TO_APSCHEDULER.md` - Migration guide from Celery |
|
- `APSCHEDULER_IMPLEMENTATION_SUMMARY.md` - Technical implementation summary |
|
|
|
## Development URLs |
|
|
|
- **Frontend**: http://localhost:3000 |
|
- **Backend API**: http://localhost:5000 |