LinkedUp is a comprehensive social networking platform built with Django, designed to connect professionals and foster meaningful interactions. It features real-time notifications, premium subscriptions, advanced search capabilities, and analytics to provide insights into user engagement.
- User Authentication & Profiles: Secure registration, login, and detailed user profiles
- Posts & Interactions: Create, share, and engage with posts through comments and reactions
- Real-time Notifications: Instant notifications for likes, comments, and follows
- Feed System: Personalized content feed with algorithmic ranking
- Advanced Search: Find users, posts, and content with powerful search capabilities
- Premium Subscriptions: Enhanced features for power users
- Analytics Dashboard: Comprehensive insights into user engagement and content performance
- Priority Support: Dedicated support for premium members
- RESTful API: Complete API coverage with Django REST Framework
- Real-time Updates: WebSocket support for live notifications
- Caching: Redis-based caching for improved performance
- Background Tasks: Celery for asynchronous processing
- Responsive Design: Mobile-first design with skeleton loaders
- Django 4.2.8 - Web framework
- Django REST Framework - API development
- PostgreSQL - Primary database (SQLite for development)
- Redis - Caching and session storage
- Celery - Background task processing
- HTML5/CSS3 - Responsive design
- JavaScript (ES6+) - Interactive features
- Skeleton Loaders - Improved UX during loading
- Docker - Containerization
- Gunicorn - WSGI server
- Nginx - Reverse proxy
- pytest - Testing framework
- Black/Flake8 - Code formatting and linting
- Python 3.8 or higher
- PostgreSQL (recommended for production) or SQLite (for development)
- Redis (for caching and Celery)
- Docker & Docker Compose (optional, for containerized deployment)
git clone https://github.com/yourusername/linkedup.git
cd linkeduppython -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activatepip install -r requirements.txt# Copy the example settings file
cp config/settings_example.py config/settings.py
# Edit config/settings.py with your configuration
# Update SECRET_KEY, database settings, etc.# Run migrations
python manage.py makemigrations
python manage.py migrate
# Create superuser
python manage.py createsuperuserpython scripts/seed_data.pypython manage.py runserverVisit http://localhost:8000 to access the application.
Create a .env file in the project root:
SECRET_KEY=your-secret-key-here
DEBUG=True
DATABASE_URL=postgresql://user:password@localhost:5432/linkedup
REDIS_URL=redis://localhost:6379/0
CELERY_BROKER_URL=redis://localhost:6379/0
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-passwordFor PostgreSQL, update config/settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'linkedup_db',
'USER': 'your_db_user',
'PASSWORD': 'your_db_password',
'HOST': 'localhost',
'PORT': '5432',
}
}POST /api/v1/auth/login/- User loginPOST /api/v1/auth/register/- User registrationPOST /api/v1/auth/logout/- User logout
GET /api/v1/posts/- List postsPOST /api/v1/posts/- Create postGET /api/v1/posts/{id}/- Get post detailsPUT /api/v1/posts/{id}/- Update postDELETE /api/v1/posts/{id}/- Delete post
GET /api/v1/users/- List usersGET /api/v1/users/{id}/- Get user profilePUT /api/v1/users/{id}/- Update user profile
POST /api/v1/reactions/- Add reactionDELETE /api/v1/reactions/{id}/- Remove reaction
GET /api/v1/notifications/- List notificationsPUT /api/v1/notifications/{id}/read/- Mark as read
/- Home feed/profile/- User profile/notifications/- Notifications page
# Run all tests
pytest
# Run with coverage
pytest --cov=apps --cov-report=html
# Run specific app tests
pytest tests/api/auth/# Format code
black .
# Check style
flake8 .
# Sort imports
isort .# Build and run with Docker Compose
docker-compose up -d
# Run migrations in container
docker-compose exec web python manage.py migrate
# Create superuser
docker-compose exec web python manage.py createsuperuser- Set
DEBUG = Falsein settings - Configure production database (PostgreSQL)
- Set up Redis for caching
- Configure Celery for background tasks
- Set up Nginx as reverse proxy
- Enable SSL/TLS certificates
- Configure environment variables
# Install production dependencies
pip install gunicorn whitenoise
# Collect static files
python manage.py collectstatic
# Run with Gunicorn
gunicorn config.wsgi:application --bind 0.0.0.0:8000linkedup/
βββ api/ # API versioning
β βββ v1/
β βββ router.py # API routing
β βββ [app]/ # App-specific API views
βββ apps/ # Django apps
β βββ auth/ # Authentication
β βββ users/ # User management
β βββ posts/ # Posts and content
β βββ comments/ # Comments system
β βββ reactions/ # Reactions (likes, etc.)
β βββ notifications/ # Real-time notifications
β βββ feed/ # Content feed
β βββ premium/ # Premium features
β βββ search/ # Search functionality
β βββ analytics/ # Analytics and insights
βββ config/ # Django configuration
β βββ settings.py # Main settings
β βββ urls.py # URL configuration
β βββ wsgi.py # WSGI application
βββ core/ # Core utilities
β βββ cache/ # Caching utilities
β βββ database/ # Database utilities
β βββ locking/ # Distributed locking
β βββ pagination/ # Pagination utilities
β βββ security/ # Security utilities
βββ docker/ # Docker configuration
βββ media/ # User uploaded files
βββ scripts/ # Utility scripts
βββ static/ # Static files (CSS, JS, images)
βββ templates/ # HTML templates
βββ tests/ # Test suite
βββ requirements.txt # Python dependencies
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PEP 8 style guidelines
- Write tests for new features
- Update documentation as needed
- Ensure all tests pass before submitting PR
This project is licensed under the MIT License - see the LICENSE file for details.
- Django community for the excellent framework
- Django REST Framework for API development
- All contributors and supporters
For support, email support@linkedup.com or join our Discord community.
Made with β€οΈ by the LinkedUp team