Skip to content

An api for users to generate everything needed for their next software development project!

License

Notifications You must be signed in to change notification settings

garrettgregor/project_planner_be

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License

Logo

AI Project Planner

An api for users to generate everything needed for their next software development project!
Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Project Planner is designed to streamline the project planning process for junior to mid level developers. By leveraging advanced AI technology, this app assists users in crafting comprehensive project plans and generating innovative ideas tailored to their chosen project type and preferred technologies.
Project Spec/Requirements

Deployed UI

(back to top)

Built With

Django Python Postgresql Youtube Ruff image AI-Project-Planner Readme Template

(back to top)

Getting Started

Ensure you have the following installed prior to installing the Project Planner App:

Prerequisites

  • Python 3.11.4
  • Django-Admin 4.2.4
  • Postgresql 14
  • pip 23.2.1

Installation

Follow these steps to install the Project Planner App:

  1. Get an API Key and/or Application Keys at: OpenAI API

  2. Fork or clone a copy of this repo, then run the following commands from the project directory in your terminal:

    git clone https://github.com/AI-Project-Planner/project_planner_be.git
  3. Navigate to the project directory:

    cd project_planner_be
  4. Create a virtual environment (optional but recommended):

    python3 -m venv env
  5. Activate the virtual environment:

    • macOS/Linux:

      source env/bin/activate
    • Windows:

      source env/Scripts/activate
  6. Install the required environment packages:

    pip install -r requirements.txt
  7. Run migrations:

    python3 manage.py makemigrations
    python3 manage.py migrate
  8. Run test suite to ensure functionality is working.

    python3 manage.py test
  9. If any modules are missing:

    pip install < MISSING MODULE >
  10. Start the development server:

    python3 manage.py runserver
    1. The server should start running at http://127.0.0.1:8000/
  11. Enter your Keys in .env

    SECRET_KEY: <your_django_secret_key>
    OPEN_API_KEY: <open_ai_api_key>

(back to top)

Usage

Endpoints

Generate a Project

POST /api/v1/users/:id/projects

Parameters

:id => user_id
Code Description
200 OK

Request Body

{
  "type": "frontend",
  "technologies": "react, typescript and javascript",
  "time": "1 week",
  "collaborators": 2
}

Example Response

{
  "id": "1",
  "type": "project",
  "attributes": {
    "name": "TaskMaster Pro",
    "steps": "Project Setup: Create Git repository and define project structure\nBackend Setup: Develop Express.js application, set up API routes\nDatabase Design: Design and implement database schema",
    "description": "TaskMaster Pro is an all-inclusive task management application designed to optimize team collaboration and productivity.",
    "features": "User registration and login\nCreate, assign, update, and track tasks\nReal-time collaboration and updates\nPriority-based task categorization",
    "interactions": "User logs in to TaskMaster Pro account.\nDashboard displays tasks by priority: High, Medium, Low.\nUser adds a task, assigns it, and sets a due date.\nTask appears under the respective priority category.\nAssigned user starts task, status updates in real-time.\nUpon completion, task is marked as done and updates for all.",
    "colors": "#3498DB\n#27AE60\n#F39C12\n#F0F3F4\n#333333\n#E74C3C",
    "saved": false,
    "timeline": "week",
    "timeline_int": 1,
    "user_id": "1"
  }
}
Error Response
Code Description
503 Server is down.
{
  "Error": "Server is down.",
  "Status": 500
}

Update Saved Status for A Users Project

PATCH /api/v1/users/:user_id/projects/:project_id/

Parameters

:user_id => user_id
:project_id => project_id
Code Description
202 ACCEPTED

Request Body

{
 "saved": "true"
}

Example Response

{
 "id": "1",
 "type": "project",
 "attributes": {
    "user_id": 1,
  "name": "TaskMaster Pro",
  "steps": "Project Setup: Create Git repository and define project structure\nBackend Setup: Develop Express.js application, set up API routes\nDatabase Design: Design and implement database schema",
  "description": "TaskMaster Pro is an all-inclusive task management application designed to optimize team collaboration and productivity.",
   "features": "User registration and login\nCreate, assign, update, and track tasks\nReal-time collaboration and updates\nPriority-based task categorization",
  "interactions": "User logs in to TaskMaster Pro account.\nDashboard displays tasks by priority: High, Medium, Low.\nUser adds a task, assigns it, and sets a due date.\nTask appears under the respective priority category.\nAssigned user starts task, status updates in real-time.\nUpon completion, task is marked as done and updates for all.",
  "colors": "#3498DB\n#27AE60\n#F39C12\n#F0F3F4\n#333333\n#E74C3C",
  "saved": true,
  "timeline": "week",
    "timeline_int": 1,
     "tagline": "Effortlessly manage and track tasks.",
        "collaborators": 4,
        "logo_url": "",
        "logo_font": ""
 }
}
Error Response
Code Description
404 Project or User ID not found.
 {
  "Error": "Project or User ID not found.",
  "Status": 404
 }

Update Attribute for A Users Project

PUT /api/v1/users/:user_id/projects/:project_id/

Parameters

:user_id => user_id
:project_id => project_id
Code Description
202 ACCEPTED

Request Body

{
 "collaborators": 5,
}

Example Response

{
 "id": "1",
 "type": "project",
 "attributes": {
    "user_id": 1,
  "name": "TaskMaster Pro",
  "steps": "Project Setup: Create Git repository and define project structure\nBackend Setup: Develop Express.js application, set up API routes\nDatabase Design: Design and implement database schema",
  "description": "TaskMaster Pro is an all-inclusive task management application designed to optimize team collaboration and productivity.",
   "features": "User registration and login\nCreate, assign, update, and track tasks\nReal-time collaboration and updates\nPriority-based task categorization",
  "interactions": "User logs in to TaskMaster Pro account.\nDashboard displays tasks by priority: High, Medium, Low.\nUser adds a task, assigns it, and sets a due date.\nTask appears under the respective priority category.\nAssigned user starts task, status updates in real-time.\nUpon completion, task is marked as done and updates for all.",
  "colors": "#3498DB\n#27AE60\n#F39C12\n#F0F3F4\n#333333\n#E74C3C",
  "saved": true,
  "timeline": "week",
    "timeline_int": 1,
     "tagline": "Effortlessly manage and track tasks.",
        "collaborators": 5,
        "logo_url": "",
        "logo_font": ""
 }
}
Error Response
Code Description
404 Project or User ID not found.
 {
  "Error": "Project or User ID not found.",
  "Status": 404
 }

Get ALL of a Users Projects

GET /api/v1/users/:id/projects/

Parameters

:id => user_id
Code Description
200 OK

Example Response

{
  "data":
  [
    {
      "id": "1",
      "type": "project",
      "attributes": {
        "user_id": 1,
        "name": "TaskMaster Pro",
        "steps": "Project Setup: Create Git repository and define project structure\nBackend Setup: Develop Express.js application, set up API routes\nDatabase Design: Design and implement database schema",
        "description": "TaskMaster Pro is an all-inclusive task management application designed to optimize team collaboration and productivity.",
        "features": "User registration and login\nCreate, assign, update, and track tasks\nReal-time collaboration and updates\nPriority-based task categorization",
        "interactions": "User logs in to TaskMaster Pro account.\nDashboard displays tasks by priority: High, Medium, Low.\nUser adds a task, assigns it, and sets a due date.\nTask appears under the respective priority category.\nAssigned user starts task, status updates in real-time.\nUpon completion, task is marked as done and updates for all.",
        "colors": "#3498DB\n#27AE60\n#F39C12\n#F0F3F4\n#333333\n#E74C3C",
        "timeline": "week",
        "timeline_int": 1,
        "saved": true,
        "tagline": "Effortlessly manage and track tasks.",
        "collaborators": 4,
        "logo_url": "",
        "logo_font": ""
      }
    },
    {
      "id": "2",
      "type": "project",
      "attributes": {
        "user_id": 1,
        "name": "Different Project Pro",
        "steps": "Project Setup: Create Git repository and define project structure\nBackend Setup: Develop Express.js application, set up API routes\nDatabase Design: Design and implement database schema",
        "description": "It's different!",
        "features": "User registration and login\nCreate, assign, update, and track tasks\nReal-time collaboration and updates\nPriority-based task categorization",
        "interactions": "User logs in to TaskMaster Pro account.\nDashboard displays tasks by priority: High, Medium, Low.\nUser adds a task, assigns it, and sets a due date.\nTask appears under the respective priority category.\nAssigned user starts task, status updates in real-time.\nUpon completion, task is marked as done and updates for all.",
        "colors": "#3498DB\n#27AE60\n#F39C12\n#F0F3F4\n#333333\n#E74C3C",
        "saved": true,
        "timeline": "days",
        "timeline_int": 4,
        "tagline": "Manage and track tasks differently.",
        "collaborators": 4,
        "logo_url": "",
        "logo_font": ""
      }
    }
  ]
}

Error Response:

Code Description
404 User ID not found.
{
  "Error": "User ID not found.",
  "Status": 404
}

Delete A User's Project

DELETE /api/v1/users/:user_id/projects/:project_id/

Parameters

:user_id => user_id
:project_id => project_id
Code Description
200 SUCCESSFUL

Example Response

{
 "messages": "Project with id " {project_id} + " was deleted."
}
Error Response
Code Description
404 Project or User ID not found.
{
  "Error": "Project or User ID not found.",
  "Status": 404
}

(back to top)

Roadmap

  • Add update and delete functionality for projects
  • Add an endpoint to GET all users
  • Logo Generation using AI
  • Allow users to login using Oauth through Github

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Follow Installation Instructions
  3. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  4. Commit your Changes (git commit -m 'Add some AmazingFeature')
  5. Push to the Branch (git push origin feature/AmazingFeature)
  6. Open a Pull Request

(back to top)

License

Distributed under the MIT License. See LICENSE.txt for more information.

(back to top)

Contact

  • Amy Marie Spears LinkedIn GitHub
  • Michael Callahan LinkedIn GitHub
  • Javen Wilson LinkedIn GitHub
  • Garrett Gregor LinkedIn GitHub

Project Link: https://github.com/AI-Project-Planner/project_planner_be

(back to top)

Acknowledgments

Our wonderful Front End Team!!

  • Saki Chatphatthanasiri GitHub
  • Laura Garcia Guerra GitHub
  • Fernando Robles GitHub

Our amazing instructors:

(back to top)

About

An api for users to generate everything needed for their next software development project!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.7%
  • Procfile 0.3%