Fantomen31 / NetPitch

0 stars 1 forks source link

NetPitch

NetPitch Homepage

Table of Contents

  1. Project Overview
  2. Features
  3. Technologies Used
  4. Installation & Setup
  5. Usage
  6. Database Schema
  7. Testing
  8. Deployment
  9. Agile
  10. Wireframe
  11. Credits

Project Overview

NetPitch is a platform that facilitates collaboration between writers and producers on media projects such as films and TV shows. The platform allows users to create profiles, submit pitch decks, request collaborations, and manage project details, creating a seamless workflow for professionals in the entertainment industry.

Purpose

NetPitch aims to bridge the gap between writers and producers by providing a collaborative space where creative ideas can be shared, pitched, and developed into full-scale media projects.

Target Audience

NetPitch is designed specifically for film and TV writers who want to pitch their ideas to producers, as well as for producers and production companies who are look to discover and collaborate on new projects.

Core Features

Technologies Used

NetPitch leverages a variety of modern web technologies to deliver a robust and scalable platform:

Live Demo

You can check out the live version of NetPitch at NetPitch Live Demo.

Features

NetPitch offers a variety of features tailored to the needs of both writers and producers in the film and TV industry. Below is an overview of the key features:

1. User Authentication & Profile Management

Log in & Sign Up

NetPitch Homepage

Home Page Logged In NetPitch Homepage

Login Form NetPitch Homepage

Sign-up Form NetPitch Homepage

Producer Page NetPitch Homepage

Writer Page NetPitch Homepage

2. Pitch Deck Management

Submit Pitch Deck NetPitch Homepage

NetPitch Homepage

Edit Pitch Deck NetPitch Homepage

NetPitch Homepage

3. Collaboration Requests

Collaborate NetPitch Homepage

NetPitch Homepage

Manage Requests NetPitch Homepage

NetPitch Homepage

4. Profile Image Management

5. Rich-Text Editor for Pitch Decks

6. Admin Panel (Django Admin)

Admin NetPitch Homepage

7. Responsive Design


Future Features (Planned Updates)

  1. Project Portfolio:

    • A dedicated section where users (writers and producers) can showcase their previously completed projects, giving collaborators insights into their past work.
  2. Dark Mode:

    • Implement a dark mode toggle for users who prefer a darker theme for browsing. This will enhance the user experience, especially for those who work in low-light environments.
  3. Communication Feature:

    • A secure communication feature that allows writers and producers to continue discussions beyond the initial collaboration request. This feature will include private messaging and notifications for ongoing project discussions.
  4. Fund Rounds Submission:

    • A feature that automates and guides users (specifically producers) through the process of submitting their media projects to various film funds globally. This will include a dynamic form that adapts based on the user’s location and project type.
  5. Co-Producers Search:

    • A dedicated search feature that allows production companies and producers to find secure co-producers in other countries, fostering international collaborations. The feature will offer filtering based on country, project type, and budget size.
  6. Monetization & Payment Structure:

    • Introduce a monetization structure for premium features, such as advanced collaboration tools or exposure to a broader network of producers and writers. This will also include a secure payment feature, allowing for subscription-based models or one-time payments.

    Key Benefits of these Future Features


With these additional features listed in the Future Features section, it gives users and contributors a forward-looking vision for how the platform will evolve and provides a clear path for growth.

Technologies Used

NetPitch leverages several modern technologies and tools to ensure scalability, security, and a seamless user experience. Below is a breakdown of the key technologies used in the project:

Backend Technologies:

Frontend Technologies:

Media & File Storage:

Deployment & Hosting:

Database Configuration:

Code Validation:

Image & File Processing:

Rich Text Editing:


These technologies come together to create a robust, responsive, and scalable platform that caters to both writers and producers in the media industry.

Installation & Setup

To run the NetPitch project locally, follow these steps to get the application up and running on your machine.

Prerequisites:

Before starting, ensure you have the following installed on your machine:

1. Clone the Repository

Start by cloning the repository to your local machine:

git clone https://github.com/your-username/netpitch.git
cd netpitch

# On macOS/Linux
python3 -m venv env
source env/bin/activate

# On Windows
python -m venv env
env\Scripts\activate

pip install -r requirements.txt

SECRET_KEY=your-secret-key
DATABASE_URL=your-database-url
CLOUDINARY_URL=cloudinary-url
DEBUG=True  # Set this to False in production

# Access PostgreSQL
psql

# In the PostgreSQL shell, create a new database
CREATE DATABASE netpitch_db;

DATABASE_URL=postgres://username:password@localhost:5432/netpitch_db

python manage.py migrate

python manage.py createsuperuser

python manage.py runserver

#You can also deploy the project to Heroku for a live production environment.

    1.  Create a Heroku account at Heroku.
    2.  Install the Heroku CLI:

#bash
curl https://cli-assets.heroku.com/install.sh | sh

heroku login

heroku create your-app-name

git push heroku main

#Set the environment variables on Heroku (replace values with your own):

heroku config:set SECRET_KEY=your-secret-key
heroku config:set DATABASE_URL=your-database-url
heroku config:set CLOUDINARY_URL=your-cloudinary-url

#Migrate the database on Heroku:

heroku run python manage.py migrate

#Collect static files:
heroku run python manage.py collectstatic --noinput

Usage

Once NetPitch is set up and running, both writers and producers can interact with the platform's key features. Below is an overview of how to use the main functionalities of the application.

1. User Registration and Login

2. Creating a Pitch Deck (For Writers)

3. Viewing and Requesting Collaboration (For Producers)

4. Managing Collaboration Requests (For Writers)

5. Updating Profiles

Update Profile Form NetPitch Homepage

6. Admin Features


Live Demo

To see the platform in action, visit the live demo of NetPitch here.

Database Schema

The database schema for NetPitch consists of several key models that represent the core functionality of the platform, including users, profiles, pitch decks, and collaboration requests. Below is an overview of the most important models and their relationships:

1. User

2. Profile

3. PitchDeck

4. Genre

5. CollaborationRequest


Relationships Summary

  1. User and Profile: One-to-one relationship. Each user has one associated profile (either as a writer or a producer).
  2. Profile and PitchDeck: One-to-many relationship. A writer (via their profile) can submit multiple pitch decks.
  3. Genre and PitchDeck: One-to-many relationship. One genre can apply to multiple pitch decks.
  4. PitchDeck and CollaborationRequest: One-to-many relationship. A pitch deck can have multiple collaboration requests.
  5. Profile (Producer) and CollaborationRequest: One-to-many relationship. A producer can submit multiple collaboration requests to different writers.

Diagram Representation

Here’s a simplified diagram of the relationships:

User ––> Profile V PitchDeck ––> Genre

V CollaborationRequest

In this diagram:


Testing

1. Automated Testing

I have not performed any automated tesing throughout this project other then testing the code with w3c and/or flake8, which was done at the end of the project and will be previewed later down the testing section.


2. Manual Testing

Below is a detailed list of manual tests that were conducted during development, documenting the input, expected output, and actual results.

User Registration and Login

Pitch Deck Management (For Writers)

Collaboration Requests (For Producers)

Admin Features


3. Code Validation

The code for NetPitch was validated using various tools to ensure that it met coding standards and was free of syntax errors.

Python Code Validation

Flake8

NetPitch Homepage

Python Test

NetPitch Homepage

Python Test Errors

NetPitch Homepage

HTML/CSS Validation

HTML Test

NetPitch Homepage

HTML Test Error

NetPitch Homepage

CSS Test

NetPitch Homepage

CSS Test Error

NetPitch Homepage

4. Browser and Device Testing

Manual testing was done to ensure the application works across different browsers and screen sizes.

Browsers Tested:

Devices Tested:

Results:


5. Lighthouse Performance Testing

Google Lighthouse was used to assess the performance and accessibility of the application.

NetPitch Homepage

7. Static Files Issue (DEBUG=False)

During the deployment process, an issue arose when setting DEBUG=False. The static files, including CSS, JavaScript, and images, were not being properly served, which caused changes in the layout and styling of the website (such as color changes and missing assets).

Issue:

Solution:

With this fix, the site works as expected when DEBUG=False, and all static assets are correctly loaded.

Deployment

NetPitch is deployed on Heroku, and this section provides instructions for both local development deployment and deploying the project to a live environment like Heroku.

1. Local Deployment

To deploy NetPitch locally on your own machine:

Prerequisites:

Steps:

  1. Clone the Repository:

    git clone https://github.com/your-username/netpitch.git
    cd netpitch
  2. Set Up Virtual Environment: It is recommended to use a virtual environment to manage dependencies.

    # Create a virtual environment
    python3 -m venv env
    
    # Activate the virtual environment
    source env/bin/activate  # On macOS/Linux
    env\Scripts\activate  # On Windows
  3. Install Dependencies: Install the required packages from the requirements.txt file.

    pip install -r requirements.txt
  4. Set Up Environment Variables: Create an .env file in the root of your project and add the following:

    SECRET_KEY=your-secret-key
    DATABASE_URL=your-database-url
    CLOUDINARY_URL=your-cloudinary-url
  5. Set Up PostgreSQL: Create a PostgreSQL database and configure it in the .env file under DATABASE_URL.

  6. Apply Migrations: Run the following command to apply the necessary database migrations:

    python manage.py migrate
  7. Create Superuser (Optional): Create a superuser to access the admin panel.

    python manage.py createsuperuser
  8. Run the Development Server: Start the local server using:

    python manage.py runserver

    You should now be able to access the application at the local develoepr enivronent host, for me it was 'https://8000-fantomen31-netpitch-y8c92sz8q4w.ws-eu116.gitpod.io'.


2. Deployment to Heroku

To deploy NetPitch to Heroku, follow these steps:

Prerequisites:

Steps:

  1. Log into Heroku: Log into your Heroku account using the CLI:

    heroku login
  2. Create a New Heroku App: Create a new Heroku app for the project:

    heroku create your-app-name
  3. Set Up Environment Variables: Configure the necessary environment variables in Heroku:

    heroku config:set SECRET_KEY=your-secret-key
    heroku config:set DATABASE_URL=your-database-url
    heroku config:set CLOUDINARY_URL=your-cloudinary-url
  4. Add Heroku Postgres: Add the Heroku Postgres add-on for database management:

    heroku addons:create heroku-postgresql:hobby-dev
  5. Prepare Static Files for Deployment: Collect static files to serve them via Whitenoise:

    python manage.py collectstatic --noinput
  6. Push Code to Heroku: Deploy the application by pushing your code to Heroku:

    git push heroku main
  7. Apply Migrations on Heroku: Run the following command to apply database migrations on Heroku:

    heroku run python manage.py migrate
  8. Create Superuser on Heroku (Optional): If you need admin access on your live site, create a superuser:

    heroku run python manage.py createsuperuser
  9. Launch the App: Once deployed, your app will be live on Heroku at the URL provided by the platform. You can access it using:

    heroku open

3. Additional Deployment Notes


4. Live Demo

The live version of NetPitch can be accessed at:
NetPitch Live on Heroku

AGILE Methodology

The development of NetPitch followed an Agile methodology, ensuring flexibility and continuous feedback throughout the project. This approach helped in managing the complexity of the platform by breaking the work into smaller, manageable iterations (sprints). Below is an overview of the Agile processes used during development.

1. Sprint Planning

NetPitch Homepage

2. Project Management Tools

NetPitch Homepage

3. Sprint Cycles

NetPitch Homepage

4. Continuous Feedback and Iteration

5. Retrospectives and Improvements

6. Final Sprint and Release


Credits

NetPitch was made possible through the use of various technologies, tools, and resources. Special thanks to the following:

1. Technologies

2. Code Validation

3. Tutorials and Documentation

4. Special Thanks


NetPitch is built on the shoulders of these incredible technologies and resources. Thank you to everyone who contributed directly or indirectly to coding before me!