Appearance
Membership module overview ​
Reader type: non-developer đź‘
This document created to exchange knowledge between developers and non-developers. For this reason:
- developers: please do not use technical terms without explaining them
- non-developers: please do no add details that are not relevant to this Module (Nova, EPs, etc.). There are more specific documents for that.
Reminder for non-developers
Please use non-production servers to test this Module.
Related docs:
Members are the registered users of the IxDF Platform within prepaid (or trial) Memberships.
Technically, each Member may have a lot of Memberships (we call it "Membership History"), but we treat the latest Membership as the main/current one.
A Membership holds information like the Membership Plan and dates:
start_atgrace_period_expire_atexpire_at
By the Account Type, Members can be one of:
- Individual
- Team (used by Company Membership). There are few Team Roles:
- Coordinator (admin)
- Supervisor (admin+courses)
- Learner (courses)
By the Lifecycle State, Members can be one of:
- Trial
- Active
- Expired
- Canceled
By the Membership Plan, Members can be one of:
- Student
- Professional
- IxDF Design League
- Trial (yes, it’s MembershipPlan, not a lifecycle state)
- Non-paying (partners, without access to paid functionality)
(we had other Plans in the past, but they are archived now).
We will describe all these options in this document.
Members are access-controlled based on the IxDF Permissions module (see permission module. Therefore, an individual Member and a Team Member will differ as they will have different Roles and Permissions.
Account Types ​
A Member can be either a part of a single Team or be an individual Member.
The key difference is who pays for the Membership. In the case of an individual Member, the Member pays for their own. For Team Members, the Team Manager (or the Company) pays for the Membership.
Currently, the only type of Team is a Company, but we keep the system flexible to introduce new Team types (e.g. Academic) with different feature sets. We have a special landing page for Teams: https://www.interaction-design.org/corporate. For more details about Team Memberships, please check the Team module docs.
Lifecycle States ​
At any time, any Member can be in one of the following states:
An example of Professional annual Membership started at 2023-10-20:
Lifecycle State transitions ​
We have documents for different transactions:
Lifecycle State: Active ​
An Active Member is a normal Member “in good standing” whose Membership is prepaid.
This is a "normal" Member state, when the Member has access to all features available with their Membership.
Lifecycle State: Expired ​
Expired vs. on Grace period
Sometimes we can say a Member is in a "Grace Period" — it’s the same as "Expired" (full synonyms).
An Expired Member is a Member whose Membership has expired and where it was not possible for us to auto-renew it (through a registered credit card). The Member will thus have a so-called "grace period" to pay their expired membership before it auto-closes (i.e. the Member becomes a Cancelled Member). The "grace period" spans 30-60 days from the expiry date. During this time, the Member will receive multiple emails inciting the Member to renew their Membership. These emails are in notifications/membership/renewal
We block all major functionality (access to courses and discussions) for Members in the grace period, and for this reason the grace period is free (members should not pay for the grace period on renewal).
Lifecycle State: Cancelled ​
At the end of the grace period, the application automatically canceled Members and their Membership. Also, Members can choose to cancel their Membership manually even being in "Active" state.
A Canceled Member can’t log in to our platform—they should reactivate his account using special reactivation flow (that includes a payment).
To simplify the reactivation flow, we don’t remove cancelled Members from our DB. Instead, we use the soft-delete technique (mark these members as deleted).
Membership Plans ​
A chosen Membership Plan defines the set of available features.
Each Membership Plan has different prices for different regions. Technically speaking, one MembershipPlan has many Prices (one-to-many relationship).
To see of the differences and limitations of each plan see https://www.interaction-design.org/join (as guest).
Plan: Professional ​
Standard duration: 1 year
Our main Membership Plan. On this plan, all functionality is available. Limitations are also standard:
max_local_groups_to_join: 5
A Member on a Professional MembershipPlan can enrol into any number of Courses.
Plan: Student ​
Standard duration: 1 year
The same as Professional, but:
- we ask for proof of studentship (upload a document)
- limit to 2 course uncompleted enrollments at the same time
Plan: Design League ​
Standard duration: 1 month
This one is quite expensive. It is the same as a Professional, but with a single premium feature: a personal Coach. You can read more about it on Design League module docs.
Plan: Trial ​
This one is a little bit more special, you can dive deeper with it on Trail Membership Plan overview.
Plan: Non-paying ​
Standard duration: 1 year
The non-paying (formerly "free") Membership Plan was created so that we can have Educational Partners who are not paying members. Technically, any Member can be granted a free membership, but at the moment, they are only used for Educational Partners.
Non-paying members should not have the same features as a paying Member. They can NOT:
- enrol in Courses
- join Local Groups
- attend Meetups (technically)
- participate (read/write) in discussions.
The only difference between a Non-paying Member and a Guest is a the Non-paying Member can log in and use their profile.
Important note: EP is a role
Technically, EPs are not just Non-paying Members, they also have "Educational Partner" role (explore roles panel). This role is the marker whether the Member is an Educational Partner or not. There's rare instances when an EP is on paid (usually Professional) Membership Plan. In these cases, they are able to use benefits of both the EP program and paid Membership.
Non-paying Memberships are automatically renewed upon expiration. Non-paying Memberships can be upgraded to a paid membership as expected, but once upgraded it is not possible to downgrade back to free: an administrator needs to do that manually (on demand).
Plan: Team Member ​
There's no such thing as a Team Membership Plan: every Team has a Team Membership and all team members have individual Professional Membership Plans.
When a Team Membership gets updated, the application automatically updates all team member’s Memberships (e.g. expiration dates).
For more details about Team Memberships, please check the Team module docs.
Membership Prices ​
Membership Plan Prices are based on
- Membership Plan
- Country of origin of the person signing up (detected by an IP address)
That allows us to let people from Africa or Bangladesh get away with a cheaper price. When reaching the sign-up page, we do a server-side sniffing of the country of origin based on the IP. That will generate a "wrong" price if people use a VPN, but we can live with that. Note, every Member has 2 countries:
- postal address country
- pricing country
The pricing country is the one that is used to determine the prices of products like MembershipPlan.
Note that if no pricing structure exits for a given country, the IxDF Platform uses the US-based pricing ("default prices").
Countries are grouped so that you can apply the same price structure (and other attributes) to several countries at once.
You can see more on the overview of Membership Prices which requires super-admin permissions and Country Pricing Groups Nova panel.