Skip to content

Commit 21b025a

Browse files
author
Jatin Goel
committed
Update Project Architecture
1 parent ed7f6a5 commit 21b025a

File tree

1 file changed

+57
-6
lines changed

1 file changed

+57
-6
lines changed

PROJECT-ARCHITECTURE.md

Lines changed: 57 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ The main focus of the first version will be to integrate social media handling a
44

55
Here is a probable project directory structure
66

7-
```
7+
``` Directory structure
88
meetup-manager
99
├── meetup-manager
1010
│   ├── meetup-manager
@@ -58,13 +58,15 @@ The event module will contain the Event, Venue and Speaker models. It will have
5858

5959
The mockup of the noify page is attached. It will use Ajax requests to make the various posts from the page.
6060

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.
6262

6363
### Autofill feature
64+
6465
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.
6566

66-
**Urls**
67-
```
67+
#### URLs
68+
69+
``` Routes
6870
/events - Event listing page
6971
/events/<id> - Event details
7072
/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
7678

7779
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.
7880

79-
**Urls**
80-
```
81+
### SM URLs
82+
83+
``` Routes
8184
# Meetup.com
8285
/meetup - [POST] Create a meetup.com event
8386
/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
8790
# Mailing list
8891
/email - [POST] Send email to mailing list
8992
```
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

Comments
 (0)