Giter VIP home page Giter VIP logo

issue-tracker-14's Introduction

Build Status

Issue Tracker on Heroku

Any good project should have a system that can connect users with developers and opposite. Users can easily report about issues that they found or ask to implement some features that they would like to see in your project. To prioritize users needs there will be an upvoting system, that will help users to push on the top of the list the most common issue or feature.This system will help developers to understand users needs and improve it.

Issues will be fixed for free and can be upvoted for free as well. But if users missing something in your project and willing to have it in the future, for amount of money of users choice they can create a feature ticket with detailed description of their needs, upvotes for this tickets as well for amount of money of users choice.

UX

Issue trecker can be part of any project. It connects users with developers. Using issue-tracker users can tell developers about issues that they found and tell develepors what they want to see in future. Users can upvote each other tickets. So developers can see what is the most important problems and try to fix it first.

  • As user who found an issue in product. I can go to tickets page and try to find if someone else had this issue using searchbar and other filters if I found the similar issue I can upvote it.
  • As user who found an issue in product. And there is nothing similar on the tickets page I can create a new ticket and describe in details the issue. In this case I will let developers to know that there is a problem.
  • As regular user I start to undestand that I missing something in this product. And it will cool to implement that. I can go and check if someone else have the same needs. If I found that my idea is on someones ticket, I give him an upvote.
  • As regular user I start to undestand that I missing something in this product. And it will cool to implement that. And there is nothing similar on the tickets page I can create a new ticket and describe in details my great idea.
  • As user I would see if there any progress going with the issue or feature tickets. And I can see it by status 'Pending', 'In Progress' or 'Done'. It helps me to see how active are developers.
  • As user I found one ticket and after readind description I know hoe to make it a bit better way. In this case I can leave a comment under the ticket.
Wireframe Database schema

Features

Existing Features

  • Tickets Page
    • Filters - that helps users find tickets that they looking for
    • Each ticket have 2 colorful labels that changing color dynamically depence of the ticket type or status
    • Add Ticket - redirect to create ticket form
    • Read More - redirect to ticket detail page
  • Ticket Detail Page
    • UpVote - every user can provide a vote for ticket. User can vote once for Issue and there is no limit for Feature. By pressing upvote feature it will redirect to prepayment page where user should insert amount that he willing to pay
    • Comment - users can write a comment under each ticket
    • Edit Ticket - available only for ticket author
  • Ticket Form Page
    • Create Ticket - creates a new ticket. By creating feature ticket it will redirect to prepayment page where user should insert amount that he willing to pay
    • Edit Ticket - makes change to existing ticket. If user want to change ticket type from issue to feature he should pay
  • Prepayment page
    • Insert Amount - users get chance to insert amount that they willing to pay for upvote or feature ticket. After submiting item will be added to the cart and user will redirected to tickets page
  • Cart
    • Item List - in cart users have list of items they want to vote for or create. No actions is apply before they pay. User can delete items from the cart
    • Checkout - redirect to checkout form
  • Checkout
    • Checkout - user have to fill up personal information and credit card details. After submiting the payment if payment went well users tickets and votes will appear in the system

Features Left to Implement

  • Password reset will send real email. Now only in terminal.
  • User profile with recent activity(tickets created, votes, comments).
  • Dasboard.

Technologies Used

  • Bootstrap
    • For template and to make website mobile responsive.
  • Django
    • Full stack framework.
  • Postgres
    • SQL database base for our data.
  • Dotenv
    • Reads the key,value pair from env.py file and adds them to environment variable. It is great for managing app settings during development and in production using 12-factor principles.
  • JQuery
    • Used for simplify DOM manipulation.
  • Amazon S3
    • Used for storing static files.
  • Stripe
    • Used for handling payments.
  • Psycopg
    • Used for implementing the DB API 2.0 protocol.
  • Boto3
    • Used to create, configure, and manage AWS services, such as EC2 and S3. Boto provides an easy to use, object-oriented API, as well as low-level access to AWS services.
  • Gunicorn
    • Used for deploy project on heroku.

Testing

Automated tests

There is some automated tests in the project. To run them use commant:

  • $python manage.py test

To see the test report:

  • $ coverage run manage.py test $ coverage html

Manual Tests

All tests going from top and from left to right

During the test on different devices and browsers no problems has been found.

Navigation
  • Logo, links on navigation bar working well.
Tickets Page
  • Filters working well. I can filter using multi paramenters.
  • Add Product button open a page form how it should be. Only if user logged in. If not redirect to login.
  • Read more button open a product description page how it should be.
Ticket Detail Page
  • Votes working well. Vote can only if logged in. For Issue one vote per person. For Feature no limit but users have to pay it will redirect to prepaymentpage
  • Comments working well. User can leave comment only if logged in.
  • Edit Ticket working well. Login required. Edit ticket can only author.
  • Label colors ticket type(Issue/Feature) and ticket status(Pending/In Progress/Done) changing dynamically.
Ticket Form Page
  • For Create a ticket. All fields required. For Issue if form filled up and submited it appears on tickets page. If it Feature it will redirect to prepayment page. It will create ticket in database but it will be hidden until it's paid.
  • For Edit a ticket. All fields required. Data appear from the right ticket. If user want to change ticket type from Issue to Feature and submit it will redirect to prepayment page like in example above.
Prepayment Page
  • Input field working well not allowed to add amount less than 100 NOK. If submit amount added to ticket and added in to the cart and redirect to tickets page.
Cart
  • User can see all items in the cart, amount per item and total amount.
  • User can remove items from the cart.
  • Checkout button will redirect to payment form.
Checkout
  • Form cannot be submited empty.
  • During the tests. Use test credit card details.
    • Card number: 4242 4242 4242 4242
    • ccv: any three numbers
    • Date: any future date

Bugs

At the moment couldn't implement pagination because conflict with django-filter. Didn't found any information how to fix it.

Deployment to Heroku

  1. Log in to Heroku
  2. Create new app. Select App name and server region.
  3. Go to resources and find postrges in add-ons.
  4. Create travis integration.
    • Login to travis with github.
    • Add .travis.yml file with language information, version, requirements.txt and script.
    • Add line of code to README.md file to see if project passing tests.
  5. Create file with dependencies. pip freeze > requirements.txt
  6. env_sample.py file with all environ variables needed to run project
  7. Create Profile. web: gunicorn issuetracker.wsgi:application
  8. Create git repository. Git init, git add.
  9. Log in to heroku. heroku login -i
  10. Connect to heroku repository. heroku git:remote -a {your-project-name}
  11. Push to heroku. git push heroku master

Run locally

  1. Create virtual evniroment
  2. pip install -r requiremnt.txt
  3. Check env_sample.py file with all environ variables needed to run project

Credits

Media

Background image

issue-tracker-14's People

Contributors

leonxx-dev avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.