Skip to content

Commit 7e64314

Browse files
committed
Legacy support: add markdown version of the specification
1 parent d88814a commit 7e64314

File tree

1 file changed

+172
-0
lines changed

1 file changed

+172
-0
lines changed

_legacy/index.md

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
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+
draft: Draft
110+
111+
state Public {
112+
state start_condition_public <<choice>>
113+
state "started" as started_public
114+
115+
[*] --> start_condition_public
116+
start_condition_public --> started_public: if 3 or more members
117+
}
118+
119+
state Private {
120+
state start_condition_private <<choice>>
121+
state "started" as started_private
122+
[*] --> start_condition_private
123+
start_condition_private --> started_private: if 3 or more members
124+
}
125+
126+
[*] --> draft
127+
[*] --> Public
128+
[*] --> Private
129+
draft --> [*]: Remove
130+
131+
state publish_campaign <<fork>>
132+
draft --> publish_campaign
133+
publish_campaign --> Public
134+
publish_campaign --> Private
135+
136+
state completed <<join>>
137+
Public --> completed
138+
Private --> completed
139+
completed --> [*]
140+
141+
```
142+
143+
## Running the gift-giving campaign
144+
145+
- The option to start campaigns is available to their creators or
146+
admins.
147+
- Once the campaign has started, no one can join or leave it.
148+
- Each campaign member is assigned to give a gift to a randomly chosen
149+
person within the same campaign members list.
150+
151+
**Giver access for wish list**
152+
153+
- The wish list of the assigned person becomes visible to the gift
154+
giver.
155+
- The giver can mark any single item within this list as a given gift.
156+
- After the gift is given, wish list returns to normal.
157+
- Wish list entry marked as given, cannot be changed by other givers.
158+
159+
**Multiple gifts**
160+
161+
Generally, gift-giving campaigns allow for one gift at a time. However,
162+
if a user is assigned twice to the same giver from different campaigns,
163+
the giver can mark as many entries as the number of assignments.
164+
165+
**Autocomplete**
166+
167+
Once all the assignments within a campaign are completed, the campaign
168+
itself is considered to be completed.
169+
170+
## REST API
171+
172+
**All site functions** will be implemented within REST API.

0 commit comments

Comments
 (0)