Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

131 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏫 Fatima Convent Senior Secondary School Website

Python Version Django Version License [Status

A modern, feature-rich Django-based content management system (CMS) for educational institutions. Designed specifically for Fatima Convent Senior Secondary School, this application provides an intuitive platform for school administrators to manage and showcase school information, events, and multimedia content.

Features β€’ Installation β€’ Usage β€’ Architecture β€’ Contributing


πŸ“‹ Table of Contents


πŸ“– Overview

The Fatima Convent Senior Secondary School Website is a comprehensive web application built with Django, enabling school administrators to manage and display:

  • Dynamic Homepage with customizable banner slideshow
  • Institutional Information including school history, mission, and principal details
  • Media Gallery with organized photo and video content
  • News & Updates for communicating important announcements
  • Fee Structure information for students and parents
  • Newsletter Subscription system for alumni engagement
  • Admin Dashboard for easy content management without coding

This project demonstrates best practices in Django development, including proper model design, template hierarchy, and static file management.


✨ Features

Core Features

  • βœ… Dynamic Banner Management - Admin-managed homepage banners with image support
  • βœ… About Section - Dedicated page for school history, principal profile, and institutional information
  • βœ… Gallery System - Categorized image and video gallery with media organization
  • βœ… Newsletter System - Email subscription functionality for alumni and interested parties
  • βœ… News Updates - Real-time updates and announcements management
  • βœ… Fee Structure - Display and manage school fee information

Technical Features

  • βœ… Django Admin Panel - Comprehensive admin interface for content management
  • βœ… Responsive Design - Mobile-friendly interface using Bootstrap 4+
  • βœ… Static Asset Management - Optimized CSS, JavaScript, and image handling
  • βœ… Database Migrations - Version-controlled database schema management
  • βœ… Media Upload Support - Easy image and video uploads with Django's media handling
  • βœ… SEO-Friendly - Structured URLs and semantic HTML templates

πŸ› οΈ Technology Stack

Category Technology
Backend Python 3.x, Django 3.x+
Database SQLite3 (development), PostgreSQL (production)
Frontend HTML5, CSS3, JavaScript (ES6+)
CSS Framework Bootstrap 4+
Icon Library Font Awesome
JavaScript Libraries jQuery, Owl Carousel, Masonry, Magnific Popup, ScrollReveal
Package Manager pip
Version Control Git

πŸ“‹ Prerequisites

Before you begin, ensure you have the following installed:

  • Python 3.8 or higher - Download Python
  • Git - Download Git
  • pip - Usually comes with Python
  • Virtual Environment - Built-in with Python (venv)

System Requirements

  • OS: Windows, macOS, or Linux
  • RAM: Minimum 512MB (1GB recommended)
  • Disk Space: Minimum 500MB
  • Browser: Modern browser with JavaScript enabled

πŸš€ Installation

Step 1: Clone the Repository

git clone https://github.com/mrinmoy-hex/FCSS-WEB.git
cd FCSS-WEB

Step 2: Create Virtual Environment

It's best practice to use a virtual environment to isolate project dependencies.

Windows (PowerShell):

python -m venv myenv
Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned
myenv\Scripts\Activate.ps1

Windows (Command Prompt):

python -m venv myenv
myenv\Scripts\activate.bat

macOS/Linux:

python3 -m venv myenv
source myenv/bin/activate

Step 3: Install Dependencies

pip install --upgrade pip
pip install -r requirements.txt

This installs all required packages including Django, Pillow (for image handling), and other dependencies specified in requirements.txt.


βš™οΈ Configuration

Environment Setup

  1. Database Setup:

    python manage.py makemigrations
    python manage.py migrate

    These commands create the SQLite database and apply all migrations.

  2. Create Superuser Account:

    python manage.py createsuperuser

    You'll be prompted to enter username, email, and password. Use a secure password for production.

  3. Collect Static Files (for production):

    python manage.py collectstatic --noinput

    This gathers all static files (CSS, JS, images) into staticfiles/ directory.

Settings Configuration

Edit SchoolApp/settings.py to customize:

# Key settings you may want to adjust:
DEBUG = True  # Set to False in production
ALLOWED_HOSTS = ['localhost', '127.0.0.1']  # Add your domain
DATABASES = {...}  # Database configuration
STATIC_URL = '/static/'  # Static files URL
MEDIA_URL = '/media/'  # Media files URL

πŸ“ Usage

Running the Development Server

Start the development server with:

python manage.py runserver

The application will be available at:

  • Frontend: http://127.0.0.1:8000/
  • Admin Panel: http://127.0.0.1:8000/admin/

Accessing the Admin Panel

  1. Navigate to http://127.0.0.1:8000/admin/
  2. Log in with your superuser credentials
  3. Manage content for:
    • Banners - Homepage banner images and text
    • About Section - School information and principal details
    • Gallery - Photos and videos organized by category
    • Newsletter Subscribers - Manage email subscriptions
    • News Updates - Create and publish announcements
    • Fee Structure - Maintain fee information

πŸ“ Project Structure

FCSS-WEB/
β”œβ”€β”€ App/                          # Main Django application
β”‚   β”œβ”€β”€ migrations/               # Database migration files
β”‚   β”œβ”€β”€ models.py                 # Database models definition
β”‚   β”œβ”€β”€ views.py                  # View logic for rendering pages
β”‚   β”œβ”€β”€ urls.py                   # URL routing
β”‚   β”œβ”€β”€ admin.py                  # Django admin configuration
β”‚   └── tests.py                  # Unit tests
β”‚
β”œβ”€β”€ SchoolApp/                    # Django project configuration
β”‚   β”œβ”€β”€ settings.py               # Project settings
β”‚   β”œβ”€β”€ urls.py                   # Project-level URL routing
β”‚   β”œβ”€β”€ wsgi.py                   # WSGI application for deployment
β”‚   └── asgi.py                   # ASGI application for async support
β”‚
β”œβ”€β”€ templates/                    # HTML templates
β”‚   β”œβ”€β”€ base.html                 # Base template (inherited by all pages)
β”‚   β”œβ”€β”€ index.html                # Homepage
β”‚   β”œβ”€β”€ about.html                # About page
β”‚   β”œβ”€β”€ gallery.html              # Gallery page
β”‚   β”œβ”€β”€ contact.html              # Contact page
β”‚   β”œβ”€β”€ fee_structure.html        # Fee structure page
β”‚   └── admin/                    # Admin templates
β”‚
β”œβ”€β”€ static/                       # Static assets (CSS, JS, images)
β”‚   β”œβ”€β”€ css/                      # Stylesheets
β”‚   β”œβ”€β”€ js/                       # JavaScript files
β”‚   β”œβ”€β”€ images/                   # Image assets
β”‚   └── vendors/                  # Third-party libraries
β”‚
β”œβ”€β”€ media/                        # User-uploaded content
β”‚   β”œβ”€β”€ banner_images/
β”‚   β”œβ”€β”€ about_images/
β”‚   └── gallery_images/
β”‚
β”œβ”€β”€ myenv/                        # Virtual environment directory
β”œβ”€β”€ manage.py                     # Django management script
β”œβ”€β”€ requirements.txt              # Python dependencies
β”œβ”€β”€ db.sqlite3                    # SQLite database
β”œβ”€β”€ Procfile                      # Deployment configuration
└── README.md                     # This file

πŸ’Ύ Database Models

Core Models

1. Banner

Represents homepage banner content with images and text.

- title: String
- image: Image field
- description: Text
- created_at: DateTime
- updated_at: DateTime

2. About

Stores school information, history, and principal details.

- title: String
- principal_name: String
- principal_image: Image field
- school_story: Text
- description: Text
- created_at: DateTime
- updated_at: DateTime

3. GalleryItem

Manages gallery photos and videos with categorization.

- category: String (choices-based)
- photo: Image field
- video: URL/Video field
- caption: String
- created_at: DateTime
- updated_at: DateTime

4. NewsletterSubscriber

Maintains email subscription list.

- email: Email field (unique)
- subscribed_at: DateTime
- is_active: Boolean

5. NewsUpdate

Handles news and announcements.

- title: String
- content: Text
- published_date: DateTime
- is_published: Boolean

6. FeeStructure

Displays school fee information.

- class: String
- annual_fee: Decimal
- monthly_fee: Decimal
- description: Text

πŸ”— API Endpoints

HTTP Method Endpoint Description
GET / Homepage with banner slideshow
GET /about/ About page with school information
GET /gallery/ Gallery page with categorized media
GET /contact/ Contact page
GET /fee_structure/ Fee structure information
GET /admin/ Admin dashboard

πŸ› Troubleshooting

Common Issues

1. Virtual Environment Not Activating

Problem: Cannot find myenv\Scripts\Activate.ps1

Solution:

# Ensure you're in the project root directory
cd FCSS-WEB

# Recreate virtual environment
python -m venv myenv

2. Module Import Errors

Problem: ModuleNotFoundError: No module named 'django'

Solution:

# Ensure virtual environment is activated
pip install -r requirements.txt

3. Database Migration Errors

Problem: django.db.utils.OperationalError

Solution:

# Reset migrations (development only!)
rm db.sqlite3
python manage.py makemigrations
python manage.py migrate

4. Static Files Not Loading

Problem: CSS/JS not displaying in browser

Solution:

# Collect static files
python manage.py collectstatic --clear --noinput

# Ensure DEBUG = True in development
# Check STATIC_URL and STATIC_ROOT in settings.py

5. Port 8000 Already in Use

Problem: Address already in use

Solution:

# Use a different port
python manage.py runserver 8001

# Or kill the process using port 8000

6. Permission Denied on Activation Script (PowerShell)

Problem: cannot be loaded because running scripts is disabled

Solution:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned

🚒 Deployment

Production Deployment Checklist

  • Set DEBUG = False in settings.py
  • Configure ALLOWED_HOSTS with your domain
  • Use environment variables for sensitive data (database credentials, secret keys)
  • Set up PostgreSQL database for production
  • Configure static file serving (CDN or web server)
  • Set up media file handling
  • Enable HTTPS
  • Configure email backend for newsletter functionality
  • Set up regular database backups
  • Use a production WSGI server (Gunicorn, uWSGI)
  • Configure web server (Nginx, Apache)

Deployment Platforms

This application can be deployed on:

  • Heroku - See Procfile for configuration
  • PythonAnywhere
  • DigitalOcean
  • AWS EC2
  • Azure App Service
  • Self-hosted VPS

🀝 Contributing

We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.

How to Contribute

  1. Fork the Repository

    # Click "Fork" on GitHub to create your own copy
  2. Clone Your Fork

    git clone https://github.com/your-username/FCSS-WEB.git
    cd FCSS-WEB
  3. Create a Feature Branch

    git checkout -b feature/your-feature-name
    # or
    git checkout -b bugfix/issue-description
  4. Make Your Changes

    • Follow Django best practices
    • Write clean, readable code
    • Add comments for complex logic
    • Update relevant documentation
  5. Commit Your Changes

    git commit -m "Add feature: Brief description of changes"
  6. Push to Your Fork

    git push origin feature/your-feature-name
  7. Open a Pull Request

    • Go to the original repository
    • Click "New Pull Request"
    • Describe your changes in detail
    • Reference any related issues

Contribution Guidelines

  • Follow PEP 8 for Python code
  • Use meaningful variable and function names
  • Include docstrings for classes and functions
  • Write unit tests for new features
  • Update README.md if adding new features
  • Keep commits atomic and well-documented

Code Style

# Good example
def get_gallery_items(category=None):
    """
    Retrieve gallery items, optionally filtered by category.

    Args:
        category (str, optional): Filter by category name

    Returns:
        QuerySet: Filtered gallery items
    """
    queryset = GalleryItem.objects.all()
    if category:
        queryset = queryset.filter(category=category)
    return queryset

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

What You Can Do

  • βœ… Use for commercial and private purposes
  • βœ… Modify the code
  • βœ… Distribute the software
  • βœ… Use it with restrictions

Conditions

  • Include the original copyright notice and license
  • Provide a copy of the license

πŸ“ž Support

Getting Help

Reporting Bugs

When reporting a bug, please include:

  1. Python version
  2. Django version
  3. Steps to reproduce
  4. Expected behavior
  5. Actual behavior
  6. Error traceback (if applicable)
  7. Screenshots (if applicable)

Feature Requests

To suggest a new feature:

  1. Check if it's already been requested in Issues
  2. Create a new issue with the title "Feature Request: [Description]"
  3. Describe the feature and why it would be useful

πŸ“š Additional Resources

Django Documentation

Frontend Frameworks

Best Practices


🎯 Roadmap

Planned features and improvements:

  • Student management system
  • Online admission portal
  • Class scheduling and timetable
  • Assignment and homework submission
  • Parent-teacher communication system
  • Mobile application
  • API documentation (Swagger/OpenAPI)
  • Search functionality
  • Multi-language support
  • Analytics and reporting dashboard

πŸ‘¨β€πŸ’» Authors & Contributors

Original Author: Mrinmoy and WIZARDOF-OZ

Contributors


πŸ™ Acknowledgments

  • Django community for excellent framework and documentation
  • Bootstrap team for responsive CSS framework
  • Font Awesome for icon library
  • All contributors and supporters of this project

Built with ❀️ for Fatima Convent Senior Secondary School

⬆ back to top

About

A Django-based school website for Fatima Convent Senior Secondary School.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages