Git Product home page Git Product logo

uptowngallery's Introduction

Uptown Gallery Readme πŸ“š

Devices Preview

Link to Live Site Here

πŸ€” What is the Uptown Gallery Website?

Uptown Gallery is a vibrant and contemporary online platform dedicated to the world of urban modern art. This website serves as a dynamic space where art enthusiasts and collectors converge to discover, list, and bid on exquisite pieces of modern artwork.

⭐ Purpose and Goals of the Website

  • Artwork Listing and Bidding: At the heart of Uptown Gallery is the ability for users to list and bid on artwork. This feature democratizes the art acquisition process, making it accessible and engaging for a broad audience of art lovers.

  • Admin-Controlled Curation: Our platform ensures the quality and authenticity of art pieces through a robust backend approval process. Admins have the capability to control and curate the artwork listed on the website, maintaining high standards and a diverse collection.

πŸ™‹ Target Audience

  • πŸ§™ Admins

    Admins are the curators and gatekeepers of the Uptown Gallery platform. Their primary role is to oversee and manage the listing of artwork, ensuring that each piece aligns with the gallery's standards and aesthetic. They possess a keen eye for quality and authenticity, and are responsible for maintaining the integrity and diversity of the art collections on the site. Admins facilitate a smooth, secure, and engaging experience for all users, handling the backend processes and making executive decisions about the content and functionality of the website.

  • πŸ‘¨β€πŸŽ€ Bidders/Buyers

    Bidders are art enthusiasts and collectors, ranging from seasoned connoisseurs to newcomers in the art world. They are attracted to the platform for its diverse collection of urban modern art and the exciting opportunity to acquire unique pieces through the bidding process. Bidders appreciate the accessibility and convenience of online bidding, and they contribute to the vibrant community of the gallery through their participation and engagement. They value transparency, authenticity, and the thrill of discovering new artists and artworks.

  • πŸ§‘β€πŸŽ¨ Artists

    Artists are the creative force behind Uptown Gallery, offering a window into the contemporary urban art scene. They are both creators and participants in the marketplace, listing their own artworks for sale and engaging with other artists and bidders. Artists on the platform are diverse in their styles and backgrounds, ranging from emerging talents to established names in the modern art scene. They seek a platform that not only showcases their work to a wider audience but also allows them to connect with fellow artists and art enthusiasts.

    Note: The roles of Bidder and Artist are fluid on Uptown Gallery, with many users participating as both. This dual role fosters a rich, interactive community where users can experience the full spectrum of art appreciation, from creation to collection.The website is designed in such a way that Artists cannot Bid on their Artwork

πŸ§‘ User stories

πŸ‘¨β€πŸŽ€ Buyer Product Backlog Milestone

Buyer Browse Art

Issue ID User Story
#10 As a As a buyer,I want to browse through available artworks.So that I can select one for purchase or to bid on.

Buyer Place Bid

Issue ID User Story
#11 As a buyer,I want to place bids on artworks in the auction. So that I can win the auction.

Buyer Profile

Issue ID User Story
#13 As a buyer,I want to be able to view my buying/bidding history in my profile.So that I can keep track of my bids.

πŸ§‘β€πŸŽ¨ Seller/Artist Product Backlog Milestone

Seller Create Art Listing

Issue ID User Story
#15 As a seller, I want to create listings for artworks that I want to sell.So that I can sell my work through the website.

Seller Set Reserve/Starting Price

Issue ID User Story
#16 As a seller,I want to set starting bids and reserve prices for auction artworks.So that I can ensure my artwork sells for a reasonable price.

Seller Profile

Issue ID User Story
#17 As a seller,I want to view the status of my listed artworks and their auction results in a 'Seller Profile' section.So that I can manage my sales more efficiently.

πŸ§™ Admin Product Backlog Milestone

Admin Art Listing Approval

Issue ID User Story
#19 As an admin, I want to approve or reject artworks listed for auction/sale. So that I curate the art that my gallery sells.

Admin User Account Control

Issue ID User Story
#20 As an admin, I want to manage user accounts and their roles (buyer/seller, admin).So that I am able to control my website and permissions on it.

πŸ–Œ UX,Design and Layout

πŸ–± UX Concept

Devices Preview

🌊 User Type Flowcharts

🌈 Design System

Click here to view the Elements of the Design System

Color Palette

This color palette was selected to reflect the game theme, mood, contrast, and accessibility for an immersive and user-friendly experience.

Color Palette

This font was chosen for its bold and easy-to-read structure while maintaining the theme of the game.

Font

Major Mono Display Font

Major Mono Display imported from Google Fonts

Raleway 400

Raleway 400 imported from Google Fonts

Iconography

Icons are taken from Bootstrap Icons

Additional Fonts, Buttons, Navbar, Activity Dasboard, Hover Effects and Cards

These elements are styled using Bootstrap 5.3

πŸ–Ό Wireframes

πŸ–₯ Technology

  • Languages:

    • Python 3.11.5: the primary language used to develop the server-side of the website.
    • JS: the primary language used to develop interactive components of the website.
    • HTML: the markup language used to create the website.
    • CSS: the styling language used to style the website.
    • Bootstrap: a CSS Framework used for developing responsive and mobile-first websites.
  • Frameworks and libraries:

    • Django: python framework used to create all the logic.
    • jQuery: was used to control click events and sending AJAX requests.
    • Bootstrap: was used to control click events and sending AJAX requests.
  • Databases:

    • SQLite: was used as a development database.
    • PostgreSQL: the database used to store all the data.
  • Other tools:

    • Git: the version control system used to manage the code.
    • Pip3: the package manager used to install the dependencies.
    • Gunicorn: the webserver used to run the website.
    • Spycopg2: the database driver used to connect to the database.
    • Django-allauth: the authentication library used to create the user accounts.
    • Django-crispy-forms: was used to control the rendering behavior of Django forms.
    • Heroku: the cloud platform used to host the website.
    • ElephantSQL: the cloud database used to store all the data.
    • GitHub: used to host the website's source code.
    • VSCode: the IDE used to develop the website.
    • Chrome DevTools: was used to debug the website.
    • Bootstrap Icons: was used to create the icons used on the website.
    • Miro was used to make a flowchart for the README file.
    • Coolors was used to make a color palette for the website.
    • W3C Validator: was used to validate HTML5 code for the website.
    • W3C CSS validator: was used to validate CSS code for the website.
    • JShint: was used to validate JS code for the website.
    • PEP8: was used to validate Python code for the website.
    • Django Q: Django Q is a native Django task queue, scheduler and worker application using Python multiprocessing. Used to update auction status after closure.
    • Django Widget Tweaks: Used to add extra classes to django html.
    • Django Debug Toolbar: Used to debug various aspects during development.
    • Cloudinary: Image/file cloud hosting service.
    • Whitenoise: tool used in Django applications for serving static files.

✍ Agile Methodology

Github's issues, issue labels, milestones and project management board was used to help me track and organise the work in this project:

πŸ’Ž Milestones

The issues where orgnaised into Milestones and custom labels where create to add context and detail to each issue and it's status :

And then displayed on my Project Management Board:

Sorted by Issue Status and Milestone, clicking into the issue allowed for viewing labels and updating them:

✨ Features

Please refer to the FEATURES.md file for all features-related documentation.

πŸ”’ Information Architecture

πŸ—‚ Database

  • During develoopment the database was created using SQLite.
  • The database was then migrated to PostgreSQL.

πŸͺ„ Data Modeling

UserProfile

Field Type Description
user OneToOneField Linked to Django's User model
name CharField The name of the user
shipping_address CharField The shipping address of the user
create_date DateTimeField The date when the user profile was created

Artwork Model

Field Type Description
id AutoField Primary key
artist ForeignKey Linked to UserProfile
create_date DateTimeField The date when the artwork was created
title CharField The title of the artwork
description TextField Description of the artwork
image CloudinaryField Image of the artwork
category CharField Category of the artwork
approved BooleanField Approval status of the artwork
approval_status CharField Detailed approval status (pending, approved, rejected)
auction_start DateTimeField Start date of the auction
auction_duration CharField Duration of the auction
reserve_price DecimalField Minimum price for the artwork

Auction Model

Field Type Description
id AutoField Primary key
artwork ForeignKey Linked to Artwork model
create_date DateTimeField The date when the auction was created
status CharField Current status of the auction
is_active BooleanField Active status of the auction
end_date DateTimeField End date of the auction
duration CharField Duration of the auction
reserve_price IntegerField Minimum price for the artwork

Bids Model

Field Type Description
id AutoField Primary key
bidder ForeignKey Linked to UserProfile model
auction ForeignKey Linked to Auction model
amount DecimalField Amount of the bid
bid_time DateTimeField Date and time when the bid was placed

πŸ“ Testing

Please refer to the TESTING.md file for all test-related documentation.

πŸš€ Deployment

  • The website was deployed to Heroku.

  • The database was deployed to ElephantSQL.

  • This website can be found here link.

Please refer to the DEPLOYMENT.md file for all deployment-related documentation.

🌟Credits

  • Custom 404/500 pages and views were taken from my mentor Juliia's ecommerce project and modified with her permission.
  • All images used on the website are taken from Vecteezy under free license.
  • Django Q information and setup was taken from this youtube video by Valentino Gagliardi.
  • Lots of information taken from this youtube video on Django from FreeCodeCamp.
  • The entire series on advacned Python from Patrick Loeber.
  • This video on AJAX Requests from Net Ninja.

πŸ† Acknowledgments

  • I would like to acknowledge my daughter and husband for their support and understanding during this time of intense learning.
  • My mentor Juliia for her guidance and suggestions, she has gone above and beyond and I am very grateful for her support and knowledge.

uptowngallery's People

Contributors

emidombek avatar

Stargazers

 avatar

Watchers

 avatar

uptowngallery's Issues

USER STORY: Test Database Connectivity

User Story: Test Database Connectivity

User Story:
As a developer, I want to test the database connectivity to ensure that the application can successfully connect to the database.

Acceptance Criteria:

  1. Verify that the application's database connection settings are correct.
  2. Establish a connection to the database from the application.
  3. Confirm that data can be retrieved and updated through the application.
  4. Handle and log any connection errors or exceptions.

Tasks:

  • Check and configure the database connection settings in the application.
  • Develop a test script to establish a connection to the database.
  • Perform read and write operations to test data retrieval and updates.
  • Implement error handling and logging for connection issues.

USER STORY: Seller Flow (High Level Design)

User Story 1: List Artwork for Sale
As a seller, I want to list my artworks for sale on the platform.
Acceptance Criteria:
1. I have access to a "Sell Artwork" section.
2. I can create listings with artwork details, images, and pricing.
3. Listings can be in auction or fixed-price format.
4. I can set starting bids and reserve prices for auctions.
User Story 2: Manage Artwork Listings
As a seller, I want to manage my existing artwork listings.
Acceptance Criteria:
1. I can edit, update, or remove my listings.
2. I receive notifications when there are bids on my auction listings.
3. For sold items, I receive notifications to prepare for shipping.
User Story 3: Track Sales
As a seller, I want to track the status of my sales.
Acceptance Criteria:
1. There is a "Sales Dashboard" showing sold artworks.
2. I can see buyer information and sale prices.
3. For shipped items, I can provide tracking information.

USER STORY: Explore About Us Page

User Story: Explore About Us Page

As a Buyer

Acceptance Criteria:

  1. In the navigation menu, there is a link to the "About Us" page.
  2. The "About Us" page provides information about the gallery's mission and history, creating a connection with buyers.
  3. Relevant information about the founders and the gallery's commitment to art is clearly presented.
  4. Buyers gain insight into the curation process and the values that guide artwork selection.

As a Seller

Acceptance Criteria:

  1. The "About Us" page includes details about the gallery's commitment to supporting artists.
  2. Sellers find information about the gallery's reach and audience, helping them understand the platform.
  3. Sellers gain insights into the curation process and how their artworks fit into the gallery's vision.
  4. The page communicates the benefits of selling through the platform, fostering trust.

As an Admin

Acceptance Criteria:

  1. The "About Us" page aligns with the gallery's brand and values.
  2. Admins have the ability to update and edit the content on the "About Us" page easily.
  3. The page provides an overview of the gallery's mission and goals, ensuring it reflects the current state of the platform.
  4. Admins can include relevant information about any recent achievements or changes in the gallery's direction.

Tasks

  • Design the layout of the "About Us" page.
  • Create content for the "About Us" page, considering the perspectives of buyers, sellers, and admins.
  • Implement the "About Us" page on the website.
  • Test the "About Us" page across different user roles to ensure a consistent and meaningful experience.
  • Ensure that admins can easily update and modify the content on the "About Us" page.

USER STORY: Buyer Browse Art

User Story

As a buyer,
I want to browse through available artworks.
So that I can select one for purchase or to bid on.

Acceptance Criteria:

  1. Acceptance Criteria 1: There is a dedicated section on the website to view artworks.

  2. Acceptance Criteria 2: Artworks are categorized and can be filtered by artist, medium, style, etc.

  3. Acceptance Criteria 3: Each artwork listing displays an image, title, artist name, starting bid (for auctions), and fixed price (for prints).

  4. Acceptance Criteria 4: Clicking on an artwork leads to a detailed page with additional information and options to bid/buy.

  5. Acceptance Criteria 5: Artworks are paginated to allow for easy navigation through multiple listings.

Tasks

  • Create a dedicated section on the website to display artworks.
  • Implement categorization and filtering options for artworks (by artist, medium, style, etc.).
  • Design artwork listing templates to display image, title, artist name, starting bid (for auctions), and fixed price (for prints).
  • Implement navigation links for pagination of artwork listings.
  • Create a detailed page template for each artwork that includes additional information and bid/buy options.
  • Ensure that clicking on an artwork leads to the corresponding detailed page.
  • Implement bidding functionality for artworks listed in auctions.
  • Implement smooth image loading and optimization for artwork images.
  • Ensure responsive design for both artwork listing pages and detailed pages.
  • Set up a backend to manage and store artwork data.
  • Create a user-friendly interface for adding new artworks to the system.
  • Implement filters and sorting for the pagination of artwork listings.
  • Test the pagination functionality to ensure smooth navigation through multiple listings.
  • Integrate search functionality to find artworks by keywords.
  • Implement a mechanism to handle bid submissions and update bid information.
  • Implement user authentication to differentiate between buyers, sellers, and admins.
  • Create a database schema to store artwork information, categories, and user interactions.
  • Set up an email notification system to inform buyers about successful bids and purchases.
  • Perform thorough testing to ensure the user can navigate, bid, and buy artworks seamlessly.

USER STORY: Buyer Flow (High Level Design)

User Story 1: Explore Artwork
As a buyer, I want to explore available artworks on the platform.
Acceptance Criteria:
1. There is a user-friendly homepage that showcases featured artworks.
2. I can easily navigate to different categories and styles of art.
3. Artwork listings include images, titles, and brief descriptions.
4. Clicking on an artwork takes me to its detailed page with more information.

USER STORY: Create Database Schema

User Story

User Story:
As a developer, I want to create the initial database schema for the project to define the structure of the database.

Acceptance Criteria:

  1. Define the main entities and their attributes for the database.
  2. Determine primary keys and foreign keys for each table.
  3. Specify data types for each column in the schema.
  4. Ensure the schema follows normalization principles.
  5. Document the database schema for reference.

Tasks:

  • Identify the main entities and their attributes.
  • Create an initial ERD (Entity-Relationship Diagram).
  • Define primary keys and foreign keys.
  • Determine appropriate data types for each column.
  • Normalize the schema to minimize data redundancy.
  • Create a detailed schema design document..

USER STORY: Seller Set Reserve/Starting Price

User Story

As a seller,
I want to set starting bids and reserve prices for auction artworks.
So that I can ensure my artwork sells for a reasonable price.

Acceptance Criteria:

  1. Acceptance Criteria 1:

When creating an auction listing, I can enter a starting bid value.
The starting bid must be a numeric value greater than zero.

  1. Acceptance Criteria 2:

I am provided with an optional field to set a reserve price.
The reserve price, if set, must be numeric and equal to or higher than the starting bid.

  1. Acceptance Criteria 3:

Clear explanations of starting bids and reserve prices are provided on the listing creation page.

  1. Acceptance Criteria 4:

I receive a warning or confirmation when attempting to set a starting bid lower than the reserve price.

  1. Acceptance Criteria 5:

If no reserve price is set, the auction proceeds without a minimum price requirement.

  1. Acceptance Criteria 6:

If a reserve price is set, the auction starts at the starting bid and requires bids to meet or exceed the reserve price for a successful sale.

  1. Acceptance Criteria 7:

If the auction ends without reaching the reserve price, the artwork remains unsold and the listing remains active.

  1. Acceptance Criteria 8:

If the highest bid meets or exceeds the reserve price, the artwork is considered sold, and the buyer is notified.

  1. Acceptance Criteria 9:

If the reserve price is met, the winning bid is equal to or higher than the reserve price.

  1. Acceptance Criteria 10:

If the reserve price is not met, the highest bid is not disclosed publicly.

  1. Acceptance Criteria 11:

The seller can choose to relist the artwork with adjusted pricing if no bids meet the reserve price.

Tasks

  • Modify the auction listing creation page to include a field for entering a starting bid value.
  • Implement validation to ensure the starting bid is a numeric value greater than zero.
  • Add an optional field for setting a reserve price during auction listing creation.
  • Implement validation to ensure the reserve price, if set, is numeric and higher than or equal to the starting bid.
  • Provide clear explanations and tooltips about starting bids and reserve prices on the listing creation page.
  • Implement logic to display a warning or confirmation when trying to set a starting bid lower than the reserve price.
  • Implement logic to proceed with the auction if no reserve price is set.
  • Implement logic to enforce the requirement for bids to meet or exceed the reserve price for successful sale.
  • Implement logic to determine whether the artwork remains unsold if the auction ends without reaching the reserve price.
  • Design and integrate a notification mechanism to inform the seller when the artwork is sold.
  • Design and implement auction outcome notifications to inform buyers about successful purchases.
  • Implement logic to determine whether the highest bid meets or exceeds the reserve price for a sold artwork.
  • Implement logic to ensure the winning bid is equal to or higher than the reserve price.
  • Design and integrate logic to hide the highest bid if the reserve price is not met.
  • Provide the option for sellers to relist the artwork with adjusted pricing if no bids meet the reserve price.
  • Test the auction creation process with different scenarios to ensure proper validation.
  • Test auction outcomes with various bid amounts and reserve prices to verify accuracy.
  • Design and implement responsive design for the auction listing creation page.
  • Test warnings, confirmations, and notifications to ensure users are appropriately informed.
  • Perform security testing to prevent manipulation of bid amounts or reserve prices.
  • Optimize the performance of auction processes for smooth user experience.
  • Test different scenarios where reserve prices are met or not met to ensure proper handling.
  • Provide clear explanations for sellers about the relisting option and how it works.
  • Conduct cross-browser testing to ensure compatibility across various web browsers.
  • Implement logic to update the listing status and availability for relisting.
  • Set up database structures to store auction-related information and outcomes.
  • Implement a user-friendly interface for sellers to review auction results and relist artworks.
  • Test the relisting functionality to ensure accurate adjustments in pricing and availability.

USER STORY: Admin Art Listing Approval

User Story

As an admin,
I want to approve or reject artworks listed for auction/sale.
So that I curate the art that my gallery sells.

Acceptance Criteria:

  1. Acceptance Criteria 1:

As an admin, I have a dedicated admin dashboard accessible when logged in.

  1. Acceptance Criteria 2:

Within the admin dashboard, there is a section labeled "Artwork Listings" or "Pending Listings."

  1. Acceptance Criteria 3:

The "Artwork Listings" section displays a list of artworks that have been submitted by sellers for auction or sale.

  1. Acceptance Criteria 4:

Each artwork entry includes the artwork title, artist name, seller's information, type (auction or fixed price), and images.

  1. Acceptance Criteria 5:

I can click on an artwork entry to view more detailed information about the listing.

  1. Acceptance Criteria 6:

The detailed view includes the artwork description, additional images, listing type, starting bid, and reserve price (if applicable).

  1. Acceptance Criteria 7:

I have the ability to approve or reject the artwork listing directly from the detailed view.

  1. Acceptance Criteria 8:

If I approve the listing, the artwork becomes visible to buyers on the website.

  1. Acceptance Criteria 9:

If I reject the listing, the artwork is not published, and the seller receives a notification explaining the reason for rejection.

  1. Acceptance Criteria 10:

I can select a reason for rejection from predefined options (e.g., inappropriate content, incorrect information).

  1. Acceptance Criteria 11:

After making a decision (approval or rejection), I am prompted to confirm the action before it's finalized.

  1. Acceptance Criteria 12:

I have the option to leave comments or notes for the seller regarding the approval or rejection decision.

  1. Acceptance Criteria 13:

Rejected artworks are automatically moved to a separate section labeled "Rejected Listings" for reference.

  1. Acceptance Criteria 14:

I receive an email notification when a new artwork is submitted for review by a seller.

  1. Acceptance Criteria 15:

The email notification includes a summary of the artwork details and a link to the admin dashboard for review.

Tasks

  • Design and implement an admin dashboard accessible only to administrators.
  • Create a section labeled "Artwork Listings" or "Pending Listings" within the admin dashboard.
  • Set up database structures to store artwork listing information and approval status.
  • Implement logic to fetch and display submitted artworks in the "Artwork Listings" section.
  • Design and implement the layout for displaying artwork entries with title, artist name, seller's information, type, and images.
  • Implement clickable artwork entries to access more detailed listing information.
  • Design and integrate the detailed view page with artwork description, additional images, listing type, starting bid, and reserve price.
  • Implement the ability to approve or reject artwork listings directly from the detailed view.
  • Implement logic to update the artwork's visibility status based on approval or rejection.
  • Design and implement confirmation prompts when approving or rejecting a listing.
  • Implement logic to send email notifications to sellers when their artwork is approved or rejected.
  • Create a separate section labeled "Rejected Listings" to store rejected artworks for reference.
  • Test the display of submitted artworks in the admin dashboard to ensure accurate content.
  • Test the detailed view page for accurate display of artwork information and approval/rejection options.
  • Test the approval and rejection mechanisms to ensure accurate updating of artwork visibility.
  • Test email notifications for artwork approval and rejection events to ensure correct content and delivery.
  • Test email notifications for new artwork submissions to ensure accurate content and delivery.
  • Ensure compatibility of the admin dashboard across different web browsers.
  • Implement logic to store rejected artworks separately and prevent their display in active listings.
  • Implement logic to handle the display of approval/rejection actions in real-time.

USER STORY: Implement Data Migration Scripts

User Story : Implement Data Migration Scripts

User Story:
As a developer, I want to write data migration scripts to populate the database with initial data.

Acceptance Criteria:

  1. Create data migration scripts for each table.
  2. Include script logic to insert sample data into tables.
  3. Ensure the scripts can be executed to populate the database.
  4. Verify that the initial data matches the project requirements.

Tasks:

  • Develop data migration scripts for each table.
  • Write SQL queries to insert sample data.
  • Test the scripts to ensure they populate the database correctly.
  • Validate that the inserted data aligns with project requirements.

USER STORY: Buyer Place Bid

User Story

As a buyer,
I want to place bids on artworks in the auction.
So that I can win the auction.

Acceptance Criteria:

  1. Acceptance Criteria 1: The auction listing page displays all artworks available for bidding.

  2. Acceptance Criteria 2: Each artwork listing includes the current highest bid and bidding end time.

  3. Acceptance Criteria 3: I can click on an artwork to access its detailed bidding page.

  4. Acceptance Criteria 4: On the artwork's bidding page, I can see the current highest bid and the minimum bid increment.

  5. Acceptance Criteria 5: I can enter my bid amount, which must be higher than the current highest bid plus the minimum increment.

  6. Acceptance Criteria 6: The bidding page shows a confirmation message before I submit my bid.

  7. Acceptance Criteria 7: After placing a bid, the system updates the current highest bid if my bid is higher.

  8. Acceptance Criteria 8: If another bidder places a higher bid before the auction ends, I receive a notification.

  9. Acceptance Criteria 9: I cannot place a bid lower than the current highest bid plus the minimum increment.

  10. Acceptance Criteria 10: I am informed of the bidding end time and time zone to prevent confusion.

  11. Acceptance Criteria 11: If the auction ends and I have the highest bid, the artwork is marked as won and I am notified.

  12. Acceptance Criteria 12: If I am outbid before the auction ends, I receive a notification and have the option to place a higher bid.

  13. Acceptance Criteria 13: The bidding process is disabled after the auction's end time.

Tasks

  • Design and implement the auction listing page to display available artworks.
  • Display artwork details including the current highest bid and bidding end time.
  • Set up clickable artwork listings that lead to the detailed bidding page.
  • Create the detailed bidding page with information about the artwork, current highest bid, and bid increment.
  • Implement bid entry field that ensures bids are higher than the current highest bid plus the minimum increment.
  • Implement logic to update the current highest bid when a new bid is placed.
  • Set up a notification system to alert bidders when they are outbid.
  • Design and implement a mechanism to prevent placing bids lower than the current highest bid plus increment.
  • Display the bidding end time and time zone prominently to prevent confusion.
  • Implement logic to determine the winner when the auction ends and notify them.
  • Disable the bidding process automatically after the auction's end time.
  • Implement a user-friendly interface to allow bidders to place higher bids after being outbid.
  • Create database structures to store artwork information, bid history, and user interactions.
  • Integrate user authentication and authorization to ensure only authorized users can place bids.
  • Implement timezone management to accurately display end times across different time zones.
  • Perform thorough testing to ensure the bidding process functions smoothly.
  • Implement a user-friendly interface for viewing won artworks and the auction results.
  • Ensure responsive design for both auction listing pages and detailed bidding pages.
  • Test the notification system to ensure bidders are promptly informed of bid updates.
  • Optimize the performance of the bidding process to handle concurrent users.
  • Provide clear error messages for any bidding-related issues or validations.
  • Perform cross-browser testing to ensure compatibility across different web browsers.

USER STORY: Seller Create Art Listing

User Story

As a seller, I want to create listings for artworks that I want to sell.
So that I can sell my work through the website.

Acceptance Criteria:

  1. Acceptance Criteria 1: When logged in to my seller account, there is a "Sell Artwork" or "Create Listing" button prominently displayed.

  2. Acceptance Criteria 2: Clicking the "Sell" button leads me to a new listing creation page.

  3. Acceptance Criteria 3: The listing creation page includes fields for artwork title, artist name, artwork description, and an image of the artwork.

  4. Acceptance Criteria 5: I can select the type of listing (auction or fixed price) for the artwork.

  5. Acceptance Criteria 6: If I choose auction, I can set a starting bid and an optional reserve price.

  6. Acceptance Criteria 7: If I choose fixed price, I can set the fixed price for the artwork.

  7. Acceptance Criteria 8: I can choose appropriate categories and tags to help potential buyers find my artwork.

  8. Acceptance Criteria 13: If everything looks good, I can click the "Create Listing" button to publish the artwork listing.

  9. Acceptance Criteria 14: After creating the listing, I receive a confirmation message and the artwork is now visible in the appropriate section of the website.

  10. Acceptance Criteria 15: If I don't complete required fields or provide valid information, I receive clear error messages guiding me on how to correct the issues.

Tasks

  • Design and implement a new page/form for creating a listing.
  • Ensure the form is user-friendly and visually consistent with the rest of the site.
  • Add fields for artwork title, artist name, artwork description, and image upload.
  • Implement form validation to ensure all required fields are filled out.
  • Ensure the newly created listing is visible in the appropriate section of the website.

USER STORY: Define Tables and Relationships

User Story: Define Tables and Relationships

User Story:
As a developer, I want to define the tables and relationships in the database schema based on the initial design.

Acceptance Criteria:

  1. Create individual tables for each entity in the schema.
  2. Define relationships (e.g., one-to-many, many-to-many) between tables.
  3. Ensure referential integrity through foreign key constraints.
  4. Implement any required join tables for many-to-many relationships.
  5. Verify that the schema aligns with the initial design.

Tasks:

  • Create database tables for each entity.
  • Define relationships between tables.
  • Add foreign key constraints to enforce referential integrity.
  • Implement join tables for many-to-many relationships.
  • Review the schema to confirm alignment with the design.

USER STORY: Configure Database Access Permissions

User Story: Configure Database Access Permissions

User Story:
As a developer, I want to configure database access permissions to ensure secure and controlled access.

Acceptance Criteria:

  1. Define user roles with appropriate access levels (e.g., read-only, read-write).
  2. Set up user accounts for developers, testers, and other relevant team members.
  3. Apply the principle of least privilege when assigning permissions.
  4. Ensure database access is restricted to authorized personnel only.
  5. Implement role-based access control (RBAC) where applicable.

Tasks:

  • Define user roles and their access levels.
  • Create user accounts for team members.
  • Assign permissions based on roles and responsibilities.
  • Restrict access to authorized personnel only.
  • Implement role-based access control where necessary.

USER STORY: Seller Profile

User Story

As a seller,
I want to view the status of my listed artworks and their auction results in a 'Seller Profile' section.
So that I can manage my sales more efficiently.

Acceptance Criteria:

  1. Acceptance Criteria 1:

When logged in to my seller account, I have access to a dedicated "Seller Profile" section.

  1. Acceptance Criteria 2:

Within the "Seller Profile," there is a subsection labeled "Listed Artworks."

  1. Acceptance Criteria 3:

The "Listed Artworks" section displays a list of all my artworks that are currently listed for auction or sale.

  1. Acceptance Criteria 4:

Each artwork entry includes the artwork title, status (active, ended, sold), type (auction or fixed price), and relevant dates.

  1. Acceptance Criteria 5:

For auction artworks, the entry also shows the highest bid and whether the reserve price was met.

  1. Acceptance Criteria 6:

I can click on an artwork entry to view more detailed information about its listing.

  1. Acceptance Criteria 7:

The detailed view includes information such as the artwork description, images, listing type, starting bid, reserve price (if applicable), and bidding end time.

  1. Acceptance Criteria 8:

The detailed view also provides information about the auction result (e.g., sold or unsold).

  1. Acceptance Criteria 9:

I can easily identify which artworks have been sold, which ones are still active, and which auctions have ended without reaching the reserve price.

  1. Acceptance Criteria 10:

The "Seller Profile" section also includes a subsection labeled "Auction Results."

  1. Acceptance Criteria 11:

The "Auction Results" subsection displays a list of my artworks that have been sold through auctions.

  1. Acceptance Criteria 12:

Each entry includes the artwork title, sale price, winning bidder's information (anonymous or username), and date of sale.

  1. Acceptance Criteria 13:

I can sort and filter the listed artworks and auction results based on various criteria, such as status, type, and date.

  1. Acceptance Criteria 14:

The "Seller Profile" section is only accessible when logged in to my seller account.

Tasks

  • Design and implement a dedicated "Seller Profile" section within the seller account.
  • Create a subsection labeled "Listed Artworks" within the "Seller Profile."
  • Set up database structures to store artwork listing information, auction outcomes, and results.
  • Implement logic to fetch and display active, ended, and sold artworks in the "Listed Artworks" section.
  • Design and implement the layout for displaying artwork entries, including title, status, type, and dates.
  • Display the highest bid and reserve price outcome for auction artworks in the "Listed Artworks" section.
  • Implement clickable artwork entries to access more detailed listing information.
  • Design and integrate the detailed view page with artwork description, images, listing type, starting bid, and reserve price.
  • Display auction results (e.g., sold or unsold) in the detailed view of the artwork listing.
  • Provide clear indicators for sold, active, and ended auction artworks in the "Listed Artworks" section.
  • Create a subsection labeled "Auction Results" within the "Seller Profile."
  • Display a list of artworks that have been sold through auctions in the "Auction Results" section.
  • Include artwork title, sale price, winning bidder's information, and date of sale in auction result entries.
  • Implement user authentication to ensure only authorized sellers can access the "Seller Profile."
  • Design and implement responsive design for the "Seller Profile" section and its subsections.
  • Test the display of active, ended, and sold artworks to ensure accurate outcomes.
  • Test the detailed view page for accurate display of listing information and auction results.
  • Perform security testing to prevent unauthorized access to seller profile information.
  • Ensure compatibility of the "Seller Profile" section across different web browsers.
  • Test sorting and filtering options with various criteria to verify accuracy.
  • Provide a clear and user-friendly interface for sellers to navigate their profile and listings.
  • Test the display of auction results with different scenarios to ensure accuracy.
  • Set up a mechanism to update artwork statuses based on auction outcomes.
  • Conduct cross-browser testing to ensure compatibility with different web browsers.

USER STORY: Admin Flow (High Level Design)

User Story 1: Review Artwork Listings
As an admin, I want to review and approve artwork listings.
Acceptance Criteria:
1. I have access to an "Admin Dashboard" for reviewing listings.
2. I can approve or reject listings based on guidelines.
3. Rejected listings are moved to a separate section.
User Story 2: Manage User Roles
As an admin, I want to manage user roles and permissions.
Acceptance Criteria:
1. There is a "User Management" section in the admin dashboard.
2. I can change user roles (buyer, seller, admin) as needed.
3. Users gain or lose access based on their roles.
User Story 3: Monitor Website Activity
As an admin, I want to monitor website activity and resolve issues.
Acceptance Criteria:
1. I receive notifications for significant events (new listings, sales, issues).
2. I can access logs and reports for auditing purposes.

USER STORY: Buyer Profile

User Story

As a buyer,
I want to be able to view my buying/bidding history in my profile.
So that I can keep track of my bids.

Acceptance Criteria:

  1. Acceptance Criteria 1: When I log in to my buyer account, there is a "My Profile" or "My Account" section available.

  2. Acceptance Criteria 2: Within the profile section, there is a subsection labeled "Buying/Bidding History."

  3. Acceptance Criteria 3: The "Buying/Bidding History" section displays a list of all the artworks I have either purchased or placed bids on.

  4. Acceptance Criteria 4: Each entry in the history includes the artwork title, image, type (purchase or bid), date, and status (won, lost, purchased).

  5. Acceptance Criteria 5: I can click on an entry to view more detailed information about the artwork.

  6. Acceptance Criteria 6: For purchased artworks, I can see the order date, order number, and total amount paid.

  7. Acceptance Criteria 7: For bid artworks, I can see my highest bid amount and whether I won or lost the auction.

  8. Acceptance Criteria 8: The history entries are sorted by the most recent activity.

  9. Acceptance Criteria 9: I can filter or search the history by artwork title, type (purchase or bid), and status.

  10. Acceptance Criteria 10: The history page provides pagination if there are a large number of entries.

  11. Acceptance Criteria 11: The "Buying/Bidding History" section is only accessible when I'm logged in to my buyer account.

  12. Acceptance Criteria 12: If I haven't made any purchases or bids yet, the history page displays a message indicating that there is no history to show.

Tasks

  • Design and implement a "My Profile" or "My Account" section for buyers.
  • Create a subsection labeled "Buying/Bidding History" within the profile section.
  • Set up a database structure to store buyer's purchase and bidding history.
  • Implement logic to fetch and display the history entries on the profile page.
  • Design history entries to show artwork title, image, type, date, and status.
  • Implement clickable history entries to access more detailed artwork information.
  • Display order date, order number, and total amount paid for purchased artworks.
  • Display highest bid amount and auction outcome for bid artworks.
  • Design and integrate user authentication to ensure only authorized users can access the history.
  • Implement responsive design for both the profile page and the history section.
  • Test the history page with different scenarios (purchases, bids, no history) to ensure accuracy.
  • Optimize the performance of fetching and displaying history entries.
  • Set up database relationships to associate artworks with buyer history.
  • Perform security testing to safeguard user data and history information.
  • Ensure the history section is accessible and functional on various devices and screen sizes.
  • Test filtering and searching functionality to ensure accurate results.
  • Perform cross-browser testing to ensure compatibility with different web browsers.
  • Provide a clear layout and navigation for users to easily understand their history.
  • Implement error handling for potential issues during fetching or displaying history.

USER STORY: Admin User Account Control

User Story

As an admin, I want to manage user accounts and their roles (buyer/seller, admin).
So that I am able to control my website and permissions on it.

Acceptance Criteria:

  1. Acceptance Criteria 1:

As an admin, I have a dedicated admin dashboard accessible when logged in.

  1. Acceptance Criteria 2:

Within the admin dashboard, there is a section labeled "User Management" or "Manage Users."

  1. Acceptance Criteria 3:

The "User Management" section displays a list of all registered users on the website.

  1. Acceptance Criteria 4:

Each user entry includes the username, email address, user role (buyer, seller, admin), and registration date.

  1. Acceptance Criteria 5:

I can search for specific users by username or email address.

  1. Acceptance Criteria 6:

I have the ability to change the user role for any user directly from the user entry.

  1. Acceptance Criteria 7:

The available user roles are "buyer," "seller," and "admin."

  1. Acceptance Criteria 8:

When I change a user's role, the user's permissions are updated accordingly.

  1. Acceptance Criteria 9:

If I change a user's role to "seller," they gain the ability to list artworks for sale.

  1. Acceptance Criteria 10:

If I change a user's role to "admin," they gain access to the admin dashboard and its features.

  1. Acceptance Criteria 11:

If I change a user's role to "buyer," they have access to buyer-related features, such as bidding and purchasing.

  1. Acceptance Criteria 12:

I have the option to disable or enable user accounts as needed.

  1. Acceptance Criteria 13:

When I disable a user account, the user cannot log in or use the website until the account is re-enabled.

  1. Acceptance Criteria 14:

I can see a history of user role changes and account status changes for audit purposes.

  1. Acceptance Criteria 15:

I receive email notifications when a user registers a new account on the website.

  1. Acceptance Criteria 16:

The email notification includes the user's username and a link to the admin dashboard for further actions.

Tasks

  • Design and implement an admin dashboard accessible only to administrators.
  • Create a section labeled "User Management" or "Manage Users" within the admin dashboard.
  • Set up database structures to store user account information and roles.
  • Implement logic to fetch and display registered users in the "User Management" section.
  • Design and implement the layout for displaying user entries with username, email address, user role, and registration date.
  • Implement search functionality to search for users by username or email address.
  • Implement the ability to change user roles directly from the user entry.
  • Design and implement a user-friendly interface to change user roles.
  • Implement logic to update user permissions based on role changes.
  • Implement permissions for each user role, including buyer-related features, listing artworks, and accessing the admin dashboard.
  • Implement the ability to enable or disable user accounts.
  • Design and implement a history log to track user role changes and account status changes.
  • Test the display of registered users in the admin dashboard to ensure accurate content.
  • Test search functionality to verify that users can be found by username or email address.
  • Test email notifications for user registration events to ensure correct content and delivery.
  • Test responsive design for various devices and screen sizes.
  • Perform security testing to prevent unauthorized access to user management features.
  • Test the user interface for changing user roles to ensure a smooth experience.
  • Test the history log to ensure accurate tracking of user role and account status changes.
  • Implement logic to send email notifications to administrators when a user registers a new account.
  • Test email notifications for user registration events to ensure correct content and delivery.
  • Optimize the performance of fetching and displaying registered users for administrators.
  • Ensure compatibility of the admin dashboard across different web browsers.
  • Implement logic to prevent disabled users from logging in or accessing the website.
  • Implement logic to enforce permissions based on user roles throughout the website.
  • Implement real-time updates for user role changes and account status changes in the admin dashboard.

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.