You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PROJECT-ARCHITECTURE.md
+57-6Lines changed: 57 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ The main focus of the first version will be to integrate social media handling a
4
4
5
5
Here is a probable project directory structure
6
6
7
-
```
7
+
```Directory structure
8
8
meetup-manager
9
9
├── meetup-manager
10
10
│ ├── meetup-manager
@@ -58,13 +58,15 @@ The event module will contain the Event, Venue and Speaker models. It will have
58
58
59
59
The mockup of the noify page is attached. It will use Ajax requests to make the various posts from the page.
60
60
61
-
There will be no Venue or Speaker page in the initial version. It will be available in django admin where the organise can add them.
61
+
There will be no Venue or Speaker page in the initial version. It will be available in django admin where the organise can add them.
62
62
63
63
### Autofill feature
64
+
64
65
The Autofill feature will support the auto generation of posts in various platfroms from the content in meetup.com. The user has to enter the text in the meetup.com textbox and when the user clicks autofill it will populate the content in other textboxes with some added intelligence, e.g. Truncating content for Twitter to 150 characters, making inline links bulleted at the end for mailing lists. The Autofill features will be a JS functionality which will happen in the client side. The user can then tweak the posts instead of manually filling each and every post.
65
66
66
-
**Urls**
67
-
```
67
+
#### URLs
68
+
69
+
```Routes
68
70
/events - Event listing page
69
71
/events/<id> - Event details
70
72
/events/<id>/notify - Create social media posts
@@ -76,8 +78,9 @@ The social module is the one that will actually create all the social media post
76
78
77
79
It will use `django-rest-framework` to expose rest urls for making the social media requests. To keep separation of concern between each social media API we will utilising Viewsets from DRF which will be organised in separate files under `views` module. This module will only serve as the API for making the posts. So it will not have any templates.
78
80
79
-
**Urls**
80
-
```
81
+
### SM URLs
82
+
83
+
```Routes
81
84
# Meetup.com
82
85
/meetup - [POST] Create a meetup.com event
83
86
/meetup/<id> - [PATCH] Update a event in meetup.com
@@ -87,3 +90,51 @@ It will use `django-rest-framework` to expose rest urls for making the social me
87
90
# Mailing list
88
91
/email - [POST] Send email to mailing list
89
92
```
93
+
94
+
## GitHub Issue Parser
95
+
96
+
The idea is to write a simple parser which will go over all the `eligible[1]` GitHub issues, i.e., the talk / workshop proposals
97
+
and generate the content for the Meetup.
98
+
99
+
Control Flow:
100
+
101
+
1. Organizer(s) goes over the GitHub issues and add labels to the issues scheduled with a label for the date for which the talk is scheduled for.
102
+
(Same as what's being done today)
103
+
104
+
1. From the Meetup Manager home page, we'll have 2 options.
105
+
- Create a Placeholder event
106
+
- Create a Meetup event
107
+
108
+
1. For updating the final details, on the Meetup Manager event page, the user will provide the date value of the Label to pick the talks for.
109
+
1. This parser will then fetch the issues from GitHub with the `scheduled` label as well as the given `date` label - eligible proposals[1]
110
+
1. Since all the GitHub issues will be following the template format, it'll be easier to parse the title, abstract and speaker details.
111
+
1. It'll then store this information in the meetup manager `talk` table with a FK association to `id` in event table
112
+
1. This will be an on-demand job from the UI via API
113
+
114
+
## Dockerizing the Application
115
+
116
+
The application should be dockerized from the beginning and preference should be for containerized development to reduce the amount of
117
+
issues with multiple devs collaborating on same piece
118
+
119
+
## Users
120
+
121
+
We should create individual user accounts for auditing purposes to later check who made what changes just in case of any anomalies.
122
+
123
+
## Notifications Scheduler
124
+
125
+
Integrate Celery workers into the application for scheduling reminders about the event, 4 days to the event, 2 days to the event, etc.
126
+
127
+
Similarly to send post event feedback collection forms so that this project's scope can be extended to Conferences as well.
128
+
129
+
## Notification Channels
130
+
131
+
There will be multiple channels, i.e., Facebook, Twitter, LinkedIn, Instagram, WhatsApp, Telegram, Email, etc.
132
+
133
+
The idea is to have a common Service layer acting as the interface for these channels.
134
+
135
+
The Application will be integrated as per the APIs defined in this Service layer and individual channel implementations will have the details
136
+
about establishing connection and event related operations.
137
+
138
+
This would make it easier to Plug N Play newer channels
139
+
140
+
We'll try to add more details to this, maybe some pseudo code as well for illustration.
0 commit comments