Profiles with multiple pages for different content types + products and membership page. DJs upload content via different forms (image, audio, video, text, tour dates). This is uploaded to cloud and delivered via CDN.
Account Management Pages
DJs can edit their profile images + the information displayed on their about page. DJ, Partners, Fans can edit personal details, email, and reset password.
Store Dashboard
DJs can see overview of stats, view all incoming transactions and connect/request payouts via Stripe.
Member Dashboard
DJs can see summarised stats (number of members, earnings etc.) and also view table of all paying members. They also need to be able to message their fans (under construction,)
Partner Dashboard
Partners & DJs can see their referral link, who has signed up through their link, and connect/request payouts via Stripe. Partners receive 5% lifetime of earnings of the DJs who sign up through their invitation link.
Checkout / eCommerce functionality
Fans purchase both subscriptions and store products via streamlined checkout. Stripe Connect being used to process payments as this allows for DJ payouts.
How I’m using database & meta fields
Displaying Profile Posts
Post Types
1. Image Posts (single image or gallery)
2. Video Posts (link embed or upload file)
2. Audio Posts (link embed or upload file)
2. Text Posts
5. Tours Dates (only shows in tour date feed)
Posts are tagged with Everyone, Gold, VIP when created. Posts tagged “Everyone” show on the “all posts” DJ profile tab.
Categorising Profile Posts
Each post type has its own profile tab and has a feed of posts with any visibility tag. Gold & VIP posts will display overlay if Fan has not purchased subscription.
Profile Post Overlays
Each visibility tag (everyone, gold, vip) has its own overlay component with different text & button links.
Unlocking Content
All post are locked for logged out users. Posts tagged “everyone” are unlocked when fan creates account. When a fan purchases a subscription, a specific id relating to DJ & subscription level is added to user metadata. This ID is queried and will unlock/hide post overlay.
Different Product Authors
DJs are assigned as “product author” (with user_id) to their subscription products + any products they upload to their store. Dashboard stats, stripe payouts, post visibility rules etc. are all dependent on this.
Subscription IDs
When a new DJ is created, 3 subscription products are created with unique ids. Subscription ids are then added to DJ user metadata
Displaying Fan Subscriptions
Fans have a simplified view of the DJs they have subscriptions for. This list created with fan user metadata.
Displaying Users of DJ Member Dashboard
Query finds users with data matching DJ data and which is then displayed in member table.
DJ “About” Profile Tab”
DJ user metadata has various info field + social media links
Partners / Affiliate Tracking
If DJ signs up through affiliate link the partner is added to user metadata of DJ. This is used to track commissions on product & subscription sales.
Fan Sign Up Form
If fan signs up on specific DJ page, profile url is added to fan user meta direct them back to profile after account verification.
Login Rules
DJ, Fan, Partner user roles redirect to different pages on login.
Additional Required Features
I’m close to completing some of these but not in place yet
DJs
Ability edit to products (currently DJs can only delete and start again). DJs also cannot edit posts but I believe this should remain (like Twitter).
Ability to message fans and fulfil the perks of membership e.g. guest lists, advance tickets etc. I think this should be one-way messaging to begin with.
Ability to create single product with multiple tracks (track name + downloadable file). I’m nearly done with this one as form array to product meta wasn’t straightforward.
Onboarding guide / wizard to educate new DJs. I think third-party solution would be best for this e.g Intercom, Userpilot, Userguiding etc. I just haven’t had time yet.
DJfan content hub with training articles/videos on career etc. Can go on subdomain e.g