Giter VIP home page Giter VIP logo

unicorn_attractor-milestone5's Introduction

Build Status

Unicorn attractor website

Milestone Project 4: Full Stack Framework with Django - Code Institute

This website allows people who are using my software to report bugs and ask to work on new features they would like to have implemented. They are able to create bug/feature tickets, comment them and like them. To implement the feature they have to contribute for 20 euros. Feature with the most contributions will be handled first. This is how we are going to prioritize our workflow.

This website helps me to show the skills that I learned, how to build a full-stack website and manage data.

Demo

A live demo can be found here.

UX

The primary target audiences are Unicorn attractor software users that would like to submit bugs, request new features and comments on posts if they want to share their experience or ask questions.

User Stories:

  • A user have an issue in the Unicorn attractor software and wants to report it to have it fixed.
  • A user wants to implement a new feature that will be good to improve the software.
  • A user wants to see all the bug tickets that have been created to see if the problem they encounter have already been mentioned.
  • A user wants to see all the feature tickets that have been created to see if the feature they would like to have has already been requested.
  • A user wants to comment on tickets (bug or feature) to discuss them or share with other user.

Wireframes

Features

All pages

  • Each page has a responsive navbar.
  • Navbar
    • Logo navigate to the home page.
    • All others button redirect the user to the appropriate page.

Home page

This page present a brief description of the website and what the user will be able to do. It allows the user to see what can be done regarding bugs and how to see/create a ticket. It also allows the user to understand what can be done for new features and how to see/create them. For each bug or feature section, there is two shortcut button possible: View tickets/requests or create ticket/request.

Bug / Feature List page

This page allows the user to view all the bugs/features that have been created by users. They can see relevant information related to a specific bug/feature as number of: comments, votes, contributions and the status. But they do not see the full title or description of the ticket. If a user is logged, he has the possibility to create a new bug/feature ticket. If there is too many bugs/features listed, a pagination allowing user to navigate between pages will appears. If a user is not logged, he can still click on new ticket button but he will be redirected to the log in form.

Bug detail page

This page allows the user to see the bug ticket in details. Meaning that they will see the full title and description. Also the user can see all the comments and replies that have been posted. If the user is logged, he can upvote or downvote the ticket, comment or reply to comments. If the user is the author of the ticket, he is able to edit that ticket. Otherwise, no edit to the ticket is possible. If the user is not logged in, he will not be able to upvote or use the comment section. However he will still be able to read comments and replies.

Feature detail page This page allows the user to see the feature ticket in details. Meaning that they will see the full title and description. Also the user can see all the comments and replies that have been posted. If the user is logged, he can upvote or downvote the ticket, comment or reply to comments. He can also contribute to features he wants to see implemented. If the user is the author of the ticket, he is able to edit that ticket. Otherwise, no edit to the ticket is possible. If the user is not logged in, he will not be able to upvote or use the comment section. However he will still be able to read comments and replies.

Profile page

This page allows the logged in users to see their personnal informations as: username, email and the date that they first joined the website. Also the user is able to see how many bugs/features tickets he has created. If the user is not logged in, no profile page button will appear.

Register page

This page allows the user to create an account and be able to login into the website.

Login page

This page allows the user to login into the website or reset his password.

Pending contribution page

This page allows the user to see all feature tickets added to their cart and allow them to proceed to checkout and pay.

Checkout page

This page allows the user to pay for the selected items.

Features Left to Implement

  • In the bug/feature detail page. When we click on the reply button, the reply section opens and close when you have added a comment. Then, you have to click on the reply button again to see the new comment added. Maybe add a feature where the reply section stays open when we add a new comment.
  • Add history of purchase into the profile page.
  • On profile account, add the possibility to modify the email of the user. If the user need to change his email address but still keep his current account instead of creating a new one.
  • I would like to merge two apps into one app for example feature and bug because they are very similar.

Technologies Used

Testing

Automated tests

  • Used Travis to test the build.
  • Used automated tests in test.py files in each app folder.

Manual tests

  • Made sure that the all website is responsive on all the devices Desktop, Laptop, Tablet and mobile.

  • Cart app

    • Tried to add more than 1 same feature into the cart at a time, error message is displayed if same feature is already added in the basket.
    • Check if deleting an item from the cart is possible. Item removed.
  • Checkout app

    • Check that the checkout page shows the right number of items selected.
  • Bugs / Features app

    • Try to upvotes and downvote the ticket. Make sure that it adds +1/-1 to the vote section.
    • Try to add comments and replies. Which add +1 into the comments section everytime a comment or reply has been added.
  • Account app

    • Make sure that the profile page shows the correct information about the user.
    • Make sure that the profile page shows the numbers of tickets created by user.
    • Make sure that the user is able to reset his password.

Issue found

  • Coverage html not working properly. It is showing wrong data saying that a lots of things is missing and also does not show all the test files added after the first command coverage html. Checked with tutors, they were not able to help regarding that and mentioned that it was not a big deal as long as I run enough test. You can run the test locally by using python3 manage.py test in the terminal.

  • When we go to the password reset confirm page. When we use DevTool and switch to see the mobile view the page is not responsive. But it is if we access directly from a mobile. For example when we click on the reset link from the mobile directly the page is responsive.

Deployment

  • Project was deployed to heroku.

    1. Created a requirements.txt used command pip freeze > requirements.txt.
    2. Created a Procfile used command echo web: python app.py > Procfile.
    3. Push everything to Github.
    4. Create a new app on the Heroku website.
    5. On deploy tab, selected deployement method > GitHub - set up automatic deploy.
    6. In settings > Config Vars. I set up environment variables:
      • AWS_ACCESS_KEY_ID
      • AWS_SECRET_ACCESS_KEY
      • DATABASE_URL
      • DISABLE_COLLECTSTATIC
      • EMAIL_ADDRESS
      • EMAIL_PASSWORD
      • SECRET_KEY
      • STRIPE_PUBLISHABLE
      • STRIPE_SECRET
    7. The website has been deployed.
  • The code is also hosted on GitHub pages, deployed directly from the master branch.

To copy the code, you can clone it by following these steps:

  1. On GitHub, navigate to the main page of the repository.
  2. Under the repository name, click Clone or download.
  3. In the Clone with HTTPs section, copy the clone URL for the repository.
  4. Open the terminal.
  5. Type git clone, and then paste the URL you copied in Step 3.
$ git clone https://github.com/USERNAME/REPOSITORY

6.Press Enter. Your local clone will be created.

To cut ties with this GitHub repository, type git remote rm origin into the terminal.

Acknowledgements

unicorn_attractor-milestone5's People

Contributors

comanezz 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.