Code Monkey home page Code Monkey logo

fishauctions's Introduction

Fish club auctions

A free, full featured auction platform:

  • Run online or in-person auctions
  • Reserve and buy now prices
  • Automatic invoicing
  • Using a projector, show pictures of lots as they are auctioned off
  • Users don't need to create an account for in-person auctions
  • Support for Breeder Award Programs/Breeder Participation Programs
  • Easily copy lots, rules, and users between auctions
  • One click export of data to generate marketing lists
  • Different seller and club cuts for club members
  • Support for multi-location auctions and mailing of lots
  • A recommendation system to find lots in large auctions
  • Dozens of stats including web traffic, auctioneer speed, lot sell prices over time, and more to help optimize your next auction
  • and more!

What started as a free and open source tool to allow fish clubs to run online auctions during COVID has grown into the best club auction platform available, used by dozens of clubs and thousands of users! If you are part of a club looking to run an auction, please visit the site here

If you have a suggestion or are a developer who would like to contribute, read on.

Features and issues

I'm open to adding new features as they are requested. Please search for your suggestion in the open issues first.

Development

This tool is built with Python3, Django, Bootstrap and a bit of JQuery. Some of the auction admin stuff uses HTMx.

Getting started (development environment)

mkdir ~/auction_site
cd ~/auction_site
sudo apt install python3 python3-pip git
# create a venv for the site to live in
python3 -m venv ./venv
# clone the site
git clone https://github.com/iragm/fishauctions
cd fishauctions
# Install required python packages
pip3 install -r requirements.txt
# Edit the venv to include the necessary environemnt settings
nano ~/auction_site/venv/bin/activate
# paste everything from set_evn_example.sh into the end of the file, then save and close
# activate the venv (this will now apply the environemnt settings added in the last step)
source ./venv/bin/activate
cd fishauctions
python3 manage.py runserver

Cron jobs

Some cron jobs are used to manage models, and should be set up outside python's venv on your server. See crontab.md for more information on setting these up

fishauctions's People

Contributors

dependabot[bot] avatar iragm avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

fishauctions's Issues

Add the ability to promote lots

I will be collecting data for how to price this in the next auction.

You will be able to donate a small amount of money to your club to promote your lot. Once promoted, the lot will get a green border in the tile view, and it will be slightly more likely to show up in the list of recommended lots.

Rework recommended lots system

It would be simpler and easier to maintain if it were merged with the lot filter.

Additionally, we should try to annotate the lot with the user's interest level rather that iterating through lots and calculating it separately for each one

Invoice rework

Real names on invoices
Sort lots you bought by lot number
Sort lots you sold by location
Add printable view

Make open links in new tab an option

Not everyone wants lots to open in a new tab. Right now, list view does not, but tile view does. This should be customizable under your account.

Add coupons or other incentives to get people to bid

Part of the friction of buying stuff is physically getting to the place to pick up lots. For casual hobbyists, it's not worth bidding on anything because they only want a couple things and it's a pain to go somewhere for a single item.

We should give some incentive for people to bid on at least one item. Once they need to get to the pickup location for any reason, a big barrier to purchasing stuff is removed.

Perhaps we could add a coupon to each auction so that the first time you place a bid in that auction, you get a $3 credit?

Rework invoices

There is quite a bit of redundant code here. Invoices should use the new lot.payout method. This would be simpler and easier to maintain down the road.

Copy lot feature

Add a copy lot button to a lot. This would set date_posted to the current time and reset the pk, but keep everything else the same.

Would need to figure out how to integrate this with auctions and individual lots.

Sniping protection

Charge $1 per lot for bids placed in the last half hour of the auction. Charge $2 for bids placed in the last 15 minutes.

Allow multiple auctions at once

Users need to be able to create their own auctions, set their own rules/splits/meetup locations/etc. and edit those auctions.

When submitting lots, users should be able to associate their lots with an active auction.

Some information on the lot recommendation system

There is a new lot recommendation system that contains a couple new ways to see lots:

  • 4 recommended lots are now visible on the lot page
  • There is a new recommended for you page, although this was mostly put together for testing and there's no public links to it yet. This page will show up to 50 open lots in any auction.

How does it work?

As you browse the site, lot views and bids get recorded. Each page view is 1 point, and each bid is 10 points. The categories of these lots are used to calculate your interest level in each category.

When you request a recommended lot, the following happens:

  1. A lot is randomly chosen (on the lot page, it's filtered by the current auction). The lot must be open for bidding.
  2. The lot's category is compared against your normalized interest in that category (that is, the category you are most interested in is 100) If you've never clicked on a lot, this will be 25
  3. If the randomly selected lot has been promoted, your interest in it will get artificially inflated a bit.
  4. A random number is thrown between 0 and 80 (80 is used instead of 100 to slightly weight against your favorite categories)
  5. If your interest in the lot is greater than the random number, you'll get shown the lot. If not, a different lot will be selected.

Add 'pro features'

Donate x to the club and get to see:

  • number of watchers on a lot
  • number of views on a lot
  • lot price history

Add chat on lots

Add the ability to ask questions and talk shit about lots. This would require a websocket, see #7

Better image handling

We should cap image uploads to 20 mb or so, and then resize them after upload so the page loads quickly.

Add a privacy policy

It would be great to have a list of exactly what data we keep and when it's shared with other users.

For example:
You real name is shared with:

  • the auction creator when you select a pickup location of an auction
  • the seller when you buy a lot in an auction
  • the buyer when you sell a lot

Track view:bid ratio per user

Keep track of how likely a user is to buy/sell lots. These numbers seem most interesting:
Lots bought:lots sold
Lots bought:lots viewed
Lots sold:lots viewed

Implement sealed bid auctions

Some code exists for this already - the only places to change this are the lot templates and when bidding (don't show the success) message.

This is low priority unless someone wants it.

Allow auction creator to remove bids

Don't show the amount of the bid or allow editing, but allow the auction owner to remove individual bids from an item. Currently this can only be done from the admin page.

Don't end all lots in an auction at the same time

Have an option to end stuff spaced out by half an hour, ending in 4 groups. For example, if the auction end time is 6:00 PM, have group 1 end at 6:00, group 2 end at 6:30, group 3 at 7:00, and group 4 at 7:30.

The issue with how things are right now is that users have no idea how much they are spending or what lots they've won, until the auction closes. If someone is bidding on multiple bags of the same fish, they might accidentally buy all of them, or they might miss all of them.

This feature lends itself to sniping, it might be worth combining it with #2

Allow high bidder to change max bid

Right now if your max bid is $10 and the actual high bid is only up to, say, $8, you can't change your max. It just tells you that you're already the high bidder. It'd be nice to be able to do that for the "You know, I really want this fish and I don't know if I'll be here at the last minute" type of aha moments.

Allow users to wish for fish

Create a wishlist section that allows users to indicate interest in a particular species, and get notified if that species is posted.

Send notification emails to auction owners

Need a series of "drip marketing" style emails following opening an auction.

These would serve to answer common questions about how the site works. No more than 5 emails in total and no longer than 3-4 sentences per email.

Include unsubscribe link in the email.

Allow users to submit lots not associated with an auction

Allow things like local pickup only and shipping.

This would directly compete with Aquabid.

Right now, the main issue I have with this is that it takes away the incentive for users to submit lots to a club auction (since directly submitting a lot bypasses the club split).

Add support for timezones

Right now, everything is fine as long as everyone using the site is on EDT.

At some point, we need to add a place in the user page (#13) to specify your time zone update templates to display local time instead of server time.

Display Watched Item Status in Auction Lot Gallery View

It would be helpful to see the yellow watched item star when looking at the gallery view of auction lots.

For example, if there are multiple lots of the same species added to the auction over time it would be easier to see if a new one was not being watched when scrolling through the listings and/or verify that all are being watched.

Add a rules/tos for each auction

New model: auction_tos. Instead of displaying the show auction rules on the lot form, check to see if the user has seen the auction rules. If they have not, redirect them and make them sign and select a location they'll be at before they can bid.

Add achievements

This could be an interesting idea to encourage people to bid on stuff they wouldn't otherwise bid on.

Have achievements for things like buying a fish no one else wants to bid on, spending over $30 on a single lot, breeding 10 different categories of fish, breeding 10 different species in a single category, etc.

Seems like a good thing implement if we ever get a large enough userbase.

Track page views

It would be fantastic to see who has viewed which items and how long they spent looking at each one.

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.