Skip to content

Commit 2006c3f

Browse files
authored
[Specification] Initial version (#1)
2 parents 44794a9 + 8e8c0bc commit 2006c3f

File tree

3 files changed

+347
-2
lines changed

3 files changed

+347
-2
lines changed

_legacy/index.md

Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
# Anonymous Giver Site
2+
3+
The project is inspired by "Secret Santa" (aka "Secret Nicholas")
4+
Christmas tradition, but it does not focus on specific celebrations or
5+
events. The primary objective is to create a place on the internet where
6+
people can gather together in groups and anonymously give gifts to each
7+
other.
8+
9+
## Key features
10+
11+
**Wish lists**
12+
13+
Any registered user can create and modify their own wish lists. The wish
14+
list is generally private and is not visible to other users, unless they
15+
are assigned as a gift-giver to the wish list owner.
16+
17+
**Many gift-giving campaigns**
18+
19+
Users can join multiple gift-giving campaigns without any limit.
20+
21+
**Personal reminders**
22+
23+
Users with empty wish lists will be prompted to place something there.
24+
Similarly, dormant users will be prompted to join an existing
25+
gift-giving campaign.
26+
27+
**Administration can't interfere**
28+
29+
Site admins provide moderation for wish lists and support gift-giving
30+
campaigns. But they cannot create their own campaigns, or modify or
31+
remove existing campaigns created by other users.
32+
33+
## Registration and authentication
34+
35+
- Anonymous users may access any publicly available page.
36+
- Anonymous users can register by providing a username, fullname, and
37+
password.
38+
- Anonymous users can log in to their existing account.
39+
- Authenticated users can log out at any time.
40+
41+
## Wish lists
42+
43+
Wish lists are personal collections of desired gifts.
44+
45+
- A wish list is created for any registered user, except admins.
46+
- Users must add at least one item to their wish list before using the
47+
site.
48+
- A wish list is available only to its owner and site admins.
49+
- A wish list is temporary available to other users assigned as a
50+
gift-giver to its owner.
51+
- Owners can add, modify, or remove entries in their wish lists.
52+
- Admins can mark any wish list item as restricted, which makes it act
53+
as a deleted one.
54+
55+
## Gift-giving campaigns
56+
57+
- Non-admin users can create their own gift-giving campaigns.
58+
- Each campaign should have name, description and members list.
59+
- The campaign creator is automatically a member and cannot be
60+
excluded.
61+
- Campaigns status can be draft, public, private, or completed.
62+
- Admins or the campaign creator can run the campaign if it has at
63+
least 3 members.
64+
- Campaigns cannot be joined once they have started.
65+
- Any user, except the creator, can leave the campaign if it hasn't
66+
started.
67+
- The creator can remove non-running campaigns regardless of members
68+
list, creation time, or status.
69+
- Admins can remove the campaigns with 3 or fewer members that hasn't
70+
started within a specified time.
71+
- Admins can remove draft campaigns that haven't been published
72+
within a specified time.
73+
- The number of campaigns a user can be member of is limited by the
74+
number of items in their wish list.
75+
76+
**Draft campaigns**
77+
78+
- No user can join a draft campaign.
79+
- Campaigns can are marked as drafts by default at creation.
80+
- The creator can publish the campaign by making campaign private or
81+
public.
82+
- Draft campaigns cannot be initiated.
83+
84+
**Public campaigns**
85+
86+
- Public campaigns are accessible to both anonymous and authenticated
87+
users.
88+
- Authenticated users can join any public campaign, unless it hasn't
89+
started.
90+
91+
**Private campaigns**
92+
93+
- Private campaign are available only to their members.
94+
- The campaign creator can share a join link with other users.
95+
- Once joined, the campaign becomes visible in the user's campaigns
96+
list.
97+
98+
**Completed campaigns**
99+
100+
Actually this means the campaign has been completed and archived. Admins
101+
can remove archived campaigns at any time (campaigns clean-up). Running
102+
campaigns cannot be manually moved to completed status. This is done
103+
automatically.
104+
105+
**Campaign life-cycle**
106+
107+
```mermaid
108+
stateDiagram-v2
109+
110+
state Public {
111+
state start_condition_public <<choice>>
112+
state "started" as started_public
113+
state "gather members" as members_public
114+
115+
[*] --> members_public
116+
members_public --> start_condition_public
117+
start_condition_public --> members_public: less than 3
118+
start_condition_public --> started_public: 3 or more members
119+
started_public --> [*]
120+
}
121+
122+
state Private {
123+
state start_condition_private <<choice>>
124+
state "started" as started_private
125+
state "send invitations" as members_private
126+
127+
[*] --> members_private
128+
members_private --> start_condition_private
129+
start_condition_private --> members_private: less than 3
130+
start_condition_private --> started_private: 3 or more members
131+
started_private --> [*]
132+
}
133+
134+
[*] --> Draft
135+
Draft --> [*]: Remove
136+
137+
state publish_campaign <<fork>>
138+
Draft --> publish_campaign
139+
publish_campaign --> Public
140+
publish_campaign --> Private
141+
142+
state completed <<join>>
143+
Public --> completed
144+
Private --> completed
145+
completed --> [*]
146+
147+
```
148+
149+
## Running the gift-giving campaign
150+
151+
- The option to start campaigns is available to their creators or
152+
admins.
153+
- Once the campaign has started, no one can join or leave it.
154+
- Each campaign member is assigned to give a gift to a randomly chosen
155+
person within the same campaign members list.
156+
157+
**Giver access for wish list**
158+
159+
- The wish list of the assigned person becomes visible to the gift
160+
giver.
161+
- The giver can mark any single item within this list as a given gift.
162+
- After the gift is given, wish list returns to normal.
163+
- Wish list entry marked as given, cannot be changed by other givers.
164+
165+
**Multiple gifts**
166+
167+
Generally, gift-giving campaigns allow for one gift at a time. However,
168+
if a user is assigned twice to the same giver from different campaigns,
169+
the giver can mark as many entries as the number of assignments.
170+
171+
**Autocomplete**
172+
173+
Once all the assignments within a campaign are completed, the campaign
174+
itself is considered to be completed.
175+
176+
## REST API
177+
178+
**All site functions** will be implemented within REST API.

index.rst

Lines changed: 131 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,135 @@ Anonymous Giver Site
44
====================
55

66
The project is inspired by "Secret Santa" (aka "Secret Nicholas") Christmas
7-
tradition, but it is not focusing on some specific celebrations or events.
7+
tradition, but it does not focus on specific celebrations or events.
88
The primary objective is to create a place on the internet where people can
9-
gather together in groups and give anonymous gift one each other.
9+
gather together in groups and anonymously give gifts to each other.
10+
11+
Key features
12+
------------
13+
14+
.. rubric:: Wish lists
15+
16+
Any registered user can create and modify their own wish lists. The wish list
17+
is generally private and is not visible to other users, unless they are
18+
assigned as a gift-giver to the wish list owner.
19+
20+
.. rubric:: Many gift-giving campaigns
21+
22+
Users can join multiple gift-giving campaigns without any limit.
23+
24+
.. rubric:: Personal reminders
25+
26+
Users with empty wish lists will be prompted to place something there.
27+
Similarly, dormant users will be prompted to join an existing gift-giving
28+
campaign.
29+
30+
.. rubric:: Administration can't interfere
31+
32+
Site admins provide moderation for wish lists and support gift-giving
33+
campaigns. But they cannot create their own campaigns, or modify or remove
34+
existing campaigns created by other users.
35+
36+
Registration and authentication
37+
-------------------------------
38+
39+
- Anonymous users may access any publicly available page.
40+
- Anonymous users can register by providing a username,
41+
fullname, and password.
42+
- Anonymous users can log in to their existing account.
43+
- Authenticated users can log out at any time.
44+
45+
Wish lists
46+
----------
47+
48+
Wish lists are personal collections of desired gifts.
49+
50+
- A wish list is created for any registered user, except admins.
51+
- Users must add at least one item to their wish list before using the site.
52+
- A wish list is available only to its owner and site admins.
53+
- A wish list is temporary available to other users assigned as a gift-giver
54+
to its owner.
55+
- Owners can add, modify, or remove entries in their wish lists.
56+
- Admins can mark any wish list item as restricted, which makes it act as
57+
a deleted one.
58+
59+
Gift-giving campaigns
60+
---------------------
61+
62+
- Non-admin users can create their own gift-giving campaigns.
63+
- Each campaign should have name, description and members list.
64+
- The campaign creator is automatically a member and cannot be excluded.
65+
- Campaigns status can be draft, public, private, or completed.
66+
- Admins or the campaign creator can run the campaign if it has at least
67+
3 members.
68+
- Campaigns cannot be joined once they have started.
69+
- Any user, except the creator, can leave the campaign if it hasn't started.
70+
- The creator can remove non-running campaigns regardless of members list,
71+
creation time, or status.
72+
- Admins can remove the campaigns with 3 or fewer members that hasn't started
73+
within a specified time.
74+
- Admins can remove draft campaigns that haven't been published within
75+
a specified time.
76+
- The number of campaigns a user can be member of is limited by the number
77+
of items in their wish list.
78+
79+
.. rubric:: Draft campaigns
80+
81+
- No user can join a draft campaign.
82+
- Campaigns can are marked as drafts by default at creation.
83+
- The creator can publish the campaign by making campaign private or public.
84+
- Draft campaigns cannot be initiated.
85+
86+
.. rubric:: Public campaigns
87+
88+
- Public campaigns are accessible to both anonymous and authenticated users.
89+
- Authenticated users can join any public campaign, unless it hasn't started.
90+
91+
.. rubric:: Private campaigns
92+
93+
- Private campaign are available only to their members.
94+
- The campaign creator can share a join link with other users.
95+
- Once joined, the campaign becomes visible in the user's campaigns list.
96+
97+
.. rubric:: Completed campaigns
98+
99+
Actually this means the campaign has been completed and archived.
100+
Admins can remove archived campaigns at any time (campaigns clean-up).
101+
Running campaigns cannot be manually moved to completed status. This is done
102+
automatically.
103+
104+
.. rubric:: Campaign life-cycle
105+
106+
.. mermaid:: mermaid/campaign-life-cycle.mmd
107+
:align: center
108+
109+
Running the gift-giving campaign
110+
--------------------------------
111+
112+
- The option to start campaigns is available to their creators or admins.
113+
- Once the campaign has started, no one can join or leave it.
114+
- Each campaign member is assigned to give a gift to a randomly chosen person
115+
within the same campaign members list.
116+
117+
.. rubric:: Giver access for wish list
118+
119+
- The wish list of the assigned person becomes visible to the gift giver.
120+
- The giver can mark any single item within this list as a given gift.
121+
- After the gift is given, wish list returns to normal.
122+
- Wish list entry marked as given, cannot be changed by other givers.
123+
124+
.. rubric:: Multiple gifts
125+
126+
Generally, gift-giving campaigns allow for one gift at a time. However, if
127+
a user is assigned twice to the same giver from different campaigns, the
128+
giver can mark as many entries as the number of assignments.
129+
130+
.. rubric:: Autocomplete
131+
132+
Once all the assignments within a campaign are completed, the campaign itself
133+
is considered to be completed.
134+
135+
REST API
136+
--------
137+
138+
**All site functions** will be implemented within REST API.

mermaid/campaign-life-cycle.mmd

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
stateDiagram-v2
2+
3+
state Public {
4+
state start_condition_public <<choice>>
5+
state "started" as started_public
6+
state "gather members" as members_public
7+
8+
[*] --> members_public
9+
members_public --> start_condition_public
10+
start_condition_public --> members_public: less than 3
11+
start_condition_public --> started_public: 3 or more members
12+
started_public --> [*]
13+
}
14+
15+
state Private {
16+
state start_condition_private <<choice>>
17+
state "started" as started_private
18+
state "send invitations" as members_private
19+
20+
[*] --> members_private
21+
members_private --> start_condition_private
22+
start_condition_private --> members_private: less than 3
23+
start_condition_private --> started_private: 3 or more members
24+
started_private --> [*]
25+
}
26+
27+
[*] --> Draft
28+
Draft --> [*]: Remove
29+
30+
state publish_campaign <<fork>>
31+
Draft --> publish_campaign
32+
publish_campaign --> Public
33+
publish_campaign --> Private
34+
35+
state completed <<join>>
36+
Public --> completed
37+
Private --> completed
38+
completed --> [*]

0 commit comments

Comments
 (0)