Automated Action 771ee5214f Implement LinkedIn-based church management system with FastAPI
- Complete FastAPI application with authentication and JWT tokens
- SQLite database with SQLAlchemy ORM and Alembic migrations
- User management with profile features and search functionality
- LinkedIn-style networking with connection requests and acceptance
- Social features: posts, likes, comments, announcements, prayer requests
- Event management with registration system and capacity limits
- RESTful API endpoints for all features with proper authorization
- Comprehensive documentation and setup instructions

Key Features:
- JWT-based authentication with bcrypt password hashing
- User profiles with bio, position, contact information
- Connection system for church member networking
- Community feed with post interactions
- Event creation, registration, and attendance tracking
- Admin role-based permissions
- Health check endpoint and API documentation

Environment Variables Required:
- SECRET_KEY: JWT secret key for token generation
2025-07-01 12:28:10 +00:00
2025-07-01 12:15:06 +00:00

LinkedIn-Based Church Management System

A comprehensive church management system built with FastAPI that incorporates LinkedIn-style networking features to help church members connect, share updates, and manage events.

Features

Authentication & User Management

  • User registration and login with JWT tokens
  • Profile management with bio, position, and contact information
  • User search functionality
  • Profile pictures and personal information

LinkedIn-Style Networking

  • Send connection requests to other church members
  • Accept/reject connection requests
  • View connections and networking activity
  • Professional-style member profiles

Social Features

  • Create and share posts (announcements, prayer requests, general updates)
  • Like and comment on posts
  • Community feed with chronological posts
  • Different post types (announcements, prayer requests)

Event Management

  • Create and manage church events
  • Event registration system with capacity limits
  • Public/private event settings
  • Event attendance tracking
  • RSVP management

Church Member Management

  • Member directory with search capabilities
  • Role-based permissions (admin/member)
  • Member profile management
  • Contact information management

Tech Stack

  • Backend: FastAPI (Python)
  • Database: SQLite with SQLAlchemy ORM
  • Authentication: JWT tokens with bcrypt password hashing
  • Migrations: Alembic
  • Validation: Pydantic
  • Code Quality: Ruff for linting

Installation & Setup

  1. Clone the repository

    git clone <repository-url>
    cd linkedinbasedchurchmanagementsystem-7j9m7d
    
  2. Install dependencies

    pip install -r requirements.txt
    
  3. Set up environment variables Create a .env file in the root directory with:

    SECRET_KEY=your-secret-key-here-change-this-in-production
    
  4. Run database migrations

    alembic upgrade head
    
  5. Start the application

    uvicorn main:app --reload
    

The application will be available at http://localhost:8000

API Documentation

Once the server is running, you can access:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc
  • OpenAPI JSON: http://localhost:8000/openapi.json

API Endpoints

Authentication

  • POST /auth/register - Register a new user
  • POST /auth/token - Login and get access token
  • GET /auth/me - Get current user information

Users

  • GET /users/ - Get all users (paginated)
  • GET /users/{user_id} - Get specific user
  • PUT /users/me - Update current user profile
  • GET /users/search/{query} - Search users

Posts

  • POST /posts/ - Create a new post
  • GET /posts/ - Get all posts (paginated)
  • GET /posts/{post_id} - Get specific post
  • PUT /posts/{post_id} - Update post
  • DELETE /posts/{post_id} - Delete post
  • POST /posts/{post_id}/like - Like a post
  • DELETE /posts/{post_id}/like - Unlike a post
  • POST /posts/{post_id}/comments - Add comment to post
  • GET /posts/{post_id}/comments - Get post comments

Events

  • POST /events/ - Create a new event
  • GET /events/ - Get all events
  • GET /events/{event_id} - Get specific event
  • PUT /events/{event_id} - Update event
  • DELETE /events/{event_id} - Delete event
  • POST /events/{event_id}/register - Register for event
  • DELETE /events/{event_id}/register - Unregister from event
  • GET /events/{event_id}/registrations - Get event registrations

Connections

  • POST /connections/ - Send connection request
  • GET /connections/sent - Get sent connection requests
  • GET /connections/received - Get received connection requests
  • GET /connections/accepted - Get accepted connections
  • PUT /connections/{connection_id} - Accept/reject connection
  • DELETE /connections/{connection_id} - Remove connection

Environment Variables

The following environment variables need to be set:

  • SECRET_KEY - JWT secret key for token generation (required)
  • PORT - Port number for the application (default: 8000)

Database

The application uses SQLite as the database, stored at /app/storage/db/db.sqlite. The database schema includes:

  • Users: User accounts with profiles and authentication
  • Connections: LinkedIn-style connections between users
  • Posts: Social media style posts with likes and comments
  • Events: Church events with registration management
  • Comments: Comments on posts
  • Likes: Like system for posts
  • Event Registrations: Event attendance tracking

Health Check

The application provides a health check endpoint at /health that returns the service status and version information.

Development

Running with Auto-reload

uvicorn main:app --reload --host 0.0.0.0 --port 8000

Code Quality

The project uses Ruff for code formatting and linting:

ruff check .
ruff format .

Database Migrations

To create a new migration:

alembic revision --autogenerate -m "Description of changes"

To apply migrations:

alembic upgrade head

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and linting
  5. Submit a pull request

License

This project is licensed under the MIT License.

Description
Project: LinkedIn-Based Church Management System
Readme 80 KiB
Languages
Python 99.6%
Mako 0.4%