Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ai-Kan #4

Open
Taha-Hassan-Git opened this issue Jun 1, 2023 · 0 comments
Open

Ai-Kan #4

Taha-Hassan-Git opened this issue Jun 1, 2023 · 0 comments

Comments

@Taha-Hassan-Git
Copy link

Taha-Hassan-Git commented Jun 1, 2023

Ai-Kan

An Ai-powered project management tool for solo developers

Describe the problem you'd like to solve

Working on solo projects can feel lonely and it's difficult to be disciplined about the way you work without the structure of a team around you. What if you had a sort of clippy on steroids to help you through?

Here's how it works:

You input a project you're working on, be it a to-do list app, a snake game, etc.

Following this, the system breaks your project down into discrete tasks, each with an estimated time of completion.

If you want to make adjustments, you can edit these tasks or their respective time estimations and resubmit them.

[
    {
      "task": "Plan the game",
      "description": "Understand the mechanics of the snake game and define the functionalities you want to implement. Also, decide on the visual layout and UI elements required.",
      "timeEstimate": "1 day"
    },
    {
      "task": "Set up the development environment",
      "description": "Ensure that Node.js and npm are installed. Create a new React project using Create React App and set up any necessary libraries or tools you'll need.",
      "timeEstimate": "1 day"
    },
    {
      "task": "Build game logic",
      "description": "Develop the game logic. This includes the movement of the snake, what happens when it eats food, what happens when it hits the wall or itself.",
      "timeEstimate": "4 days"
    },
    {
      "task": "Develop the user interface",
      "description": "Create the components for your game's UI. This includes the game board, the score display, and any controls or buttons you've planned.",
      "timeEstimate": "2 days"
    },
    {
      "task": "Implement state management",
      "description": "Use React's state and props to manage the game's state - this could include the snake's position, the position of the food, the game score, and whether the game is ongoing, won, or lost.",
      "timeEstimate": "2 days"
    },
    {
      "task": "Adding CSS",
      "description": "Style your components and game board using CSS. You may want to consider making the game responsive so it looks good on all screen sizes.",
      "timeEstimate": "2 days"
    },
    {
      "task": "Testing",
      "description": "Test your game thoroughly. This includes checking if the game logic works as expected, UI renders correctly and the game provides correct responses to user inputs.",
      "timeEstimate": "2 days"
    },
    {
      "task": "Deployment",
      "description": "Deploy your game to a hosting platform. You could use options like GitHub Pages, Vercel, or Netlify. Make sure to test the deployed version.",
      "timeEstimate": "1 day"
    }
]

For a more detailed analysis, you can further break down each task into specific issues, which can then be broken down into more granular issues. This action triggers an update and recalculation of time estimations.

[
    {
      "issue": "Define Game Rules",
      "description": "Understand and clearly define the rules of the game, such as how the snake moves, what happens when it eats food, and what happens when it collides with the wall or itself.",
      "timeEstimate": "1 day"
    },
    {
      "issue": "Implement Snake Movement",
      "description": "Develop the logic for snake movement in all four directions. The snake should move smoothly, square by square, not pixel by pixel.",
      "timeEstimate": "1 day"
    },
    {
      "issue": "Implement Food Generation",
      "description": "Write the code to randomly generate food on the game board. Ensure the food doesn't appear where the snake currently is.",
      "timeEstimate": "1 day"
    },
    {
      "issue": "Handle Eating Food",
      "description": "Create the logic for what happens when the snake eats food. This usually means the snake grows in length and the player's score increases.",
      "timeEstimate": "1 day"
    },
    {
      "issue": "Implement Collision Detection",
      "description": "Detect when the snake has collided with the wall or itself. This usually means the game is over.",
      "timeEstimate": "1 day"
    },
    {
      "issue": "Implement Scoring",
      "description": "Keep track of the player's score, which typically increases when the snake eats food.",
      "timeEstimate": "1 day"
    },
    {
      "issue": "Implement Game Over Condition",
      "description": "Implement a condition to check when the game is over, usually when the snake collides with the wall or itself. When the game is over, stop the game and display a game over message.",
      "timeEstimate": "1 day"
    }
]

[
    {
      "step": "Define Snake Data Structure",
      "description": "Determine how to represent the snake in your code. A common way to do this is as an array of coordinates representing the snake's body segments.",
      "pseudocode": "snake = [{x: 5, y: 5}, {x: 4, y: 5}, {x: 3, y: 5}]; // Represents a snake with length 3, moving to the right",
      "timeEstimate": "2 hours"
    },
    {
      "step": "Implement Movement Direction",
      "description": "Define the possible directions the snake can move. Usually, the snake can move up, down, left, or right.",
      "pseudocode": "const DIRECTIONS = { UP: {x: 0, y: -1}, DOWN: {x: 0, y: 1}, LEFT: {x: -1, y: 0}, RIGHT: {x: 1, y: 0}};",
      "timeEstimate": "1 hour"
    },
    {
      "step": "Implement Change of Direction",
      "description": "Add a way for the player to change the direction of the snake. Typically, this is done using keyboard input.",
      "pseudocode": "document.addEventListener('keydown', function(event) { if (event.key === 'ArrowUp') currentDirection = DIRECTIONS.UP; ... });",
      "timeEstimate": "2 hours"
    },
    {
      "step": "Implement Movement Update",
      "description": "Create a function to update the snake's position based on the current direction. The snake moves by adding a new segment in the current direction at the front and removing the last segment, unless it has just eaten food.",
      "pseudocode": "function updateSnake() { const newHead = {x: snake[0].x + currentDirection.x, y: snake[0].y + currentDirection.y}; snake.unshift(newHead); if (!justAteFood) snake.pop(); }",
      "timeEstimate": "3 hours"
    },
    {
      "step": "Add Movement Loop",
      "description": "Implement a main game loop that updates the snake's position at regular intervals to create the illusion of movement.",
      "pseudocode": "setInterval(updateSnake, 100); // Updates the snake's position every 100ms",
      "timeEstimate": "1 hour"
    }
]

Tasks or issues can be marked as completed, which grays them out on the interface and recalculates the remaining project time.

Stretch features:

  • You attach more detailed info such as the technologies you want to use and your experience level.
  • The board helps you generate user stories.
  • When an issue is marked as complete, you can submit your code for a review.

Who are the stakeholders?

Solo developers that are self taught and looking for external guidance. More experienced solo developers that prefer to brainstorm with another person. Software development courses.

Other considerations

We need to consider data and privacy concerns.

Although we will have a tech-savvy userbase the feel of the application needs to be intuitive because step by step explanations may be cumbersome.

What Ai Kan is not:

  • An engine that develops your project for you
  • a one-stop-shop for learning how to code
  • A personal assistant that reminds you of tasks

What is currently being done to solve this problem?

I personally hate the github project board. There are a couple of ai project management tools already and even an AI kanban board. While they're feature-rich they are pretty bloated and it takes way too much set up to get started. I want something that you can just get going with right away.

What technology might be interesting to explore?

I think it would make most sense to use react on the front end and express/SQLite on the backend. But I'm interested to try using firebase got login/Auth. I'm also open to using vanilla JS on the front end if react is out of most people's comfort zones, though I think it would be v cumbersome to manage things like state.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant