Skip to content

skunkworksacademy/Classrooms

Repository files navigation

Classroom-Template

License GitHub last commit GitHub contributors GitHub issues

Welcome to the Classroom-Template repository! This repository is designed as a template for the Student User Registry and Management System (SURMS) project. It provides a structured foundation for backend and frontend development, complete with documentation and deployment guides.


Project Overview

The Classroom-Template repository is intended to serve as a starting point for educational projects within the Skunkworks Academy. It includes:

  • A Django backend with REST API capabilities.
  • A React frontend for user interaction.
  • Detailed documentation covering system architecture and deployment.

Features

  • 🛠️ Comprehensive Backend: Built with Django, featuring RESTful APIs and database models for managing student data.
  • 🎨 Interactive Frontend: Developed with React, providing an intuitive user interface for registration and profile management.
  • 📚 Extensive Documentation: Includes guides for API usage, system architecture, and deployment processes.

Directory Structure

Here’s an overview of the directory structure:

Classroom-Template/
├── backend/
│   ├── requirements.txt
│   ├── manage.py
│   ├── surms_backend/
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   ├── wsgi.py
│   │   ├── asgi.py
│   │   ├── models.py
│   │   ├── views.py
│   │   ├── serializers.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── urls.py
│   │   │   ├── views.py
│   │   │   ├── serializers.py
│   │   ├── tests/
│   │       ├── __init__.py
│   │       ├── test_models.py
│   │       ├── test_views.py
│   ├── .env.example
├── frontend/
│   ├── public/
│   │   ├── index.html
│   │   ├── favicon.ico
│   ├── src/
│   │   ├── components/
│   │   │   ├── Header.js
│   │   │   ├── Footer.js
│   │   │   ├── Profile.js
│   │   │   ├── RegistrationForm.js
│   │   ├── App.js
│   │   ├── index.js
│   ├── package.json
│   ├── .env.example
├── docs/
│   ├── API_DOCUMENTATION.md
│   ├── SYSTEM_ARCHITECTURE.md
│   ├── DEPLOYMENT_GUIDE.md
├── .gitignore
├── README.md
├── LICENSE

Getting Started

Backend Setup

  1. Navigate to the backend/ directory.

  2. Install the required dependencies:

    pip install -r requirements.txt
  3. Set up your environment variables using the .env.example file.

Frontend Setup

  1. Navigate to the frontend/ directory.

  2. Install the required dependencies:

    npm install
  3. Set up your environment variables using the .env.example file.

Run the Application

  • Start the Django development server:

    python manage.py runserver
  • Start the React development server:

    npm start

System Architecture

Overview

The SURMS application consists of a Django backend and a React frontend. The backend serves as an API provider, managing the database and authentication, while the frontend interacts with the backend via RESTful API calls.

Components

Component Description
Backend Django-based, REST API, PostgreSQL for database management
Frontend React-based UI, state management with hooks
Deployment Backend on Heroku, Frontend on Vercel

System Diagram

Here’s a visual representation of the system architecture:

System Architecture

(Image source: Wikimedia Commons)


Documentation

The repository includes the following documentation to guide you through various aspects of the project:

  • API Documentation: A detailed guide to using the API, located in docs/API_DOCUMENTATION.md.
  • System Architecture: An overview of the system’s components and interactions, found in docs/SYSTEM_ARCHITECTURE.md.
  • Deployment Guide: Instructions for deploying the application on Heroku and Vercel, available in docs/DEPLOYMENT_GUIDE.md.

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any improvements, bug fixes, or additional features.

Contributor Guidelines

  • Fork the repository.
  • Create a new branch (git checkout -b feature-branch).
  • Make your changes and commit them (git commit -m "Feature description").
  • Push to the branch (git push origin feature-branch).
  • Open a pull request.

License

This repository is licensed under the MIT License. See the LICENSE file for more details.


Footer Image