This webapp creates a meeting that compares participants' calendars and displays their common available time. The purpose of the app is to provide a simple, convinient and fast way to schedule a meeting, without registering an account and without excessive amount of settings. Only Google calendar is supported now, Outlook calendar and manual calendar input are planned to be supported in the future.
The app is currently in development. It is being made using Angular for ClientApp SPA, ASP.NET Core for backend WebApi, Microsoft Sql Server for database. The main functionality has been done, and it's example is presented in the section below.
Current version of the app is available at https://meetingdateproposer.azurewebsites.net
- Registration is not required to use the app
- Very simple and straightforward calendar view
- Only Google Calendar is supported at the moment
- If the meeting has a lot of participants, you may choose which participant's calendars to compare and exclude very busy participants from the meeting
- You message to your friend with whom you want to meet.
- You create the meeting in the app. No account registration required.
- You add yourself to the meeting, and give the app a readonly access to your calendar.
- You share the meeting link with your friend.
- Your friend uses the link to add himself to the meeting and gives the app access to his calendar.
- The app compares both calendars and presents you with a very simple view of time when both of you have spare time in your calendars and are free to meet.
- You and your friend arrange the exact meeting time via a chosen communication service using the information provided by the app.
- SDK:
.NET 6
- Frameworks:
ASP .NET
,Angular
- Persistence:
- Database:
MS SQL Server 15
- ORM:
Entity Framework Core 6.0
- Database:
- Authentication and Authorization:
ASP .NET Core Identity
- Business Logic:
AutoMapper
Google.Apis.Calendar.v3 1.57
- Presentation:
- Frontend Development:
Angular 14
- Calendar view:
angular-calendar 0.29
- Frontend Development:
- Unit Testing:
XUnit
- Containerization:
Docker
- Continuous Delivery:
GitHub Actions
,Azure
To build and run the project you would need the following:
- Git
- .Net 6.0 SDK
- NodeJs (Latest LTS)
- Microsoft SQL Server
-
Clone the repo:
git clone https://github.com/famturiop/MeetingDateProposer.git
-
Change directory:
cd MeetingDateProposer/MeetingDateProposer
-
Restore packages:
dotnet restore MeetingDateProposer.sln
-
Install npm packages:
cd MeetingDateProposer/ClientApp
npm install
-
Set the following enviroment variables:
ConnectionStrings__DefaultConnection
: Database connection string in MsSQL server formatSeededUsers__Admin__Name
: Admin usernameSeededUsers__Admin__Email
: Admin emailSeededUsers__Admin__Password
: Admin passwordCalendars__GoogleCalendar__ClientId
andCalendars__GoogleCalendar__ClientSecret
: Google OAuth client ID credentials that are used to authenticate as an end user and access their data after said user gave his consent (You can learn how to get them here)
-
If you are running for the first time, install dev certificates using command:
dotnet dev-certs https --trust
-
Run the project:
cd ..
dotnet run