eVent! a task and event management app for family and friends
Tags: twiliohackathon, netcore
Published: 2020-04-30 03:35:36

I've been a member of dev.to for some time now. Incidentally, this is my first post and I'm excited to present to you my submission for the Dev.to Twilio Hackathon: eVent 🥁

An event and task management app for family and friends!🎉🧓🎂👨‍👨‍👧‍👦

Imagine if you could assign tasks to your kids or family members. Let them know about important events in your life and remind them so they never miss it! 😁 

This is what the eVent app is all about. For the hackathon submission, I've created a small MVP which does the following:
- Securely registers new users - I use .net core identity for this
- Verify user phone number using Twillio SMS API
- Create tasks and events for the user
- A user can send and accept friend invites
- Send text reminders to the task assignee when a task is due using Twilio.
- Send out invites or reminders to friends about your events using Twilio
- See your tasks and events as well as your friend events on your calendar

The main technologies I used were
- Angular and Angular CLI for the frontend
- .net core for the backend
- MySQL for the DB

In addition to this I used some interesting frameworks and technologies:
- .net core Identity to register and manage user authentication and authorization
- Dapper for accessing my application-related data
- Docker for provisioning my MySQL DB locally 
- For some time I used hangfire for sending out the reminders but eventually replaced it with a .net core hosted service because hangfire didn't play nicely with MySQL :)

If you want to see a live demo of it here it is (published on Azure): https://eventapplication.azurewebsites.net/

Otherwise, read on! for a description of some of the main scenarios:
## Verify Phone number
A part of the user registration is the verification of the user's phone number. I'm using Twilio to send a verification code to the user via sms. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/2dhnal50wk5vgafme9h5.png)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/7vm18ljbvwlr89aka607.png)
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/psccy4d05mb4xpsamvvq.jpg)

## Add a friend
Once you have registered and verified your phone number you can go to the app and start using it. For example, you can search for and add a friend by username. In order for the process to be complete, the friend's user must accept the request.
**Adding a user:**
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/t3ith9jertubqodbvyli.gif)

**Accepting a user invite:**
When you receive an invite all you have to do is click accept to become friends. 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/t0sa5tjsdr4n5117gafj.png)
Now you can do exciting things like assign tasks and notify them of your events!

## Assign a task to a friend and set them a reminder
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/1ll5os2mp5qcy03yq5rt.gif)

The assigned user will get a friendly text message with a gentle reminder just before the task is due 😆✅:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/apq2bezxz3se3zwuh95g.jpg)

## Create an event and make public to your friends
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/yq1on50q5xpl7au4k8aj.gif)

Now your friends will get a reminder of this event:
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/yjtc3wonw3o9jbqo6zfp.jpg)

## See your events and your friends' public events on the same calendar
Finally, you can see your events and your friend's public events on your calendar. Never miss an event again!😊
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/4xg11w2h5o5r7jw25myi.gif)

I hope you enjoyed this project. If you'd like to see the source code for this project you can find it [here](https://github.com/mia01/eVent). You'll find information about the project setup as well. Feel free to ask questions, give encouragement/advice/request features, etc. Any interactions are most welcome!