jslovers / jslovers-official-website

JSLovers Official Website built on Next.js
MIT License
55 stars 46 forks source link

POC -> Database -> MongoDB with PrismaORM or AWS Amplify #38

Open jaswantsandhu opened 2 months ago

jaswantsandhu commented 2 months ago

As a Speaker, I should be able to create an account or login in JSLovers website and see my profile. As an Attendee, I should be able to create an account or login in JSLovers website, see my profile, and sign up for meetups. As a Meetup Organizer, I should be able to create an account or login in JSLovers website, see my profile, and create and manage meetups, add speaker roles for that meetup and fetch list of attendees and should be able broadcast communication messages to attendees. As an Admin, I should be able to login in JSLovers website as Admin, create and manage, delete meetups, add meetup-organizer roles or remove them.

New Features to built

akshat99812 commented 3 weeks ago

Hello @ekas will do but be needing some help

what are requirements ? Components you might wanna add any specific direction you want to give about what the database should contain in MongoDb ui of signin/signup page

thank you!

Neha commented 3 weeks ago

Hello @ekas will do but be needing some help

what are requirements ? Components you might wanna add any specific direction you want to give about what the database should contain in MongoDb ui of signin/signup page

thank you!

Hey @akshat99812 , have you checked the description? @jaswantsandhu has added requirements in that.

I would suggest you before you move ahead with code or ui of signin/signup page can you share the design of the DB?

we will work in collaboration to discuss the design of the DB.

akshat99812 commented 3 weeks ago

@Neha Ya sure , here 's a high level of what I think schema should be

1.User Model:

2.Speaker Model:

3.Meetups Model:

Neha commented 3 weeks ago

@Neha Ya sure , here 's a high level of what I think schema should be

1.User Model:

  • id
  • email: unique
  • name
  • number
  • password
  • meetups

2.Speaker Model:

  • id
  • email: The speaker's email, which must be unique.
  • name
  • password

3.Meetups Model:

  • id
  • meetup: name or label of the meetup
  • userId: The ID of the user who is associated with this meetup.

Is there any changes you want

This is a good start but it is missing a lot of details.

Eg:

user model: what would be the role? why we need number and email both? can we do just one? do we need location? (as we are multi city and country based)

speaker:

speaker could be speaker at multiple meetups speaker location feedback meetup list resources ( ppt, code repos as per the meetups) speaker's bio, pics

Meetups:

location how many attendees visibility, etc.

It would be better to think more on it.

akshat99812 commented 3 weeks ago

Could you please take a look

1.Users Table

user_id (Primary Key) name email (Unique) password_hash role (e.g., attendee, speaker, admin) city country created_at updated_at

2.Speakers Table

speaker_id (Primary Key) user_id (Foreign Key to Users table) bio profile_picture_url location

3.Meetups Table

meetup_id (Primary Key) title description location date visibility (e.g., public, private) created_at updated_at

4.Speaker_Meetup Table (Many-to-Many relationship between Speakers and Meetups)

speaker_meetup_id (Primary Key) speaker_id (Foreign Key to Speakers table) meetup_id (Foreign Key to Meetups table)

5.Feedback Table

feedback_id (Primary Key) user_id (Foreign Key to Users table) meetup_id (Foreign Key to Meetups table) rating comments created_at

6.Resources Table

resource_id (Primary Key) meetup_id (Foreign Key to Meetups table) resource_type (e.g., ppt, code repo) resource_url created_at

what types of roles to assume in users table Could you kindly review the proposed schema and provide any feedback or suggestions for improvement?

Neha commented 3 weeks ago

Thank you for your contribution.

Can you please explain how everything is connected? How the data will flow between them? For user role, as a schema designer and based on your experience what roles we should have and what access should be give to them?

I still feel there is lot of work and brainstorming is required.

As of now, I have started a discussion here: https://github.com/jslovers/jslovers-official-website/discussions/68. This would be the place where I keep updating the schema design. Please feel free to share your inputs.

akshat99812 commented 3 weeks ago

Just added db schema design in the discussion section could you please review.

akshat99812 commented 2 weeks ago

Any updates?

Neha commented 2 weeks ago

There is no update on this. I would request you to keep an eye on discussion. Discussion will be updated whenever there is any update. For now, I have locked this conversation. to avoid adding more comments here