Giter Club home page Giter Club logo

hack-together's Introduction

Hack Together: Microsoft Graph and .NET πŸ¦’

Hack Together banner

Hackathon survey

Hack Together: Microsoft Graph and .NET πŸ¦’

From March 1-15, 2023 we ran Hack Together: Microsoft Graph and .NET - a virtual hackathon for beginners to get started building scenario-based apps using .NET and Microsoft Graph.

In this hackathon, participants learned how to build apps with Microsoft Graph based on top Microsoft Graph scenarios, and met Microsoft Graph Product Group Leaders, Cloud Advocates, MVPs and Student Ambassadors. Each submitted app had a chance to win exciting prizes.

We're excited to share the hackathon winners

Congratulations to the winners and a huge thank you to all participants!

Read the full announcement

Continue your journey

While the hackathon is finished, your journey doesn’t have to end. Join the Microsoft 365 and Power Platform Community to continue building with Microsoft Graph and .NET. Find like-minded people, attend community calls, and explore resources to see what else you can build using Microsoft Graph!

Microsoft 365 and Power Platform Community banner

Hack Together Roadmap πŸ—ΊοΈ

Hack Together Roadmap

Follow the steps below to successfully complete the hackathon.

Watch the sessions πŸŽ₯

Recommended Learning Materials

Templates

If you are looking for a code template to start your project, we have the following templates available for you in this repository:


Hack Together footer

Hackathon survey

hack-together's People

Contributors

aycabas avatar banovvv avatar brehtyn avatar emreaka avatar microsoft-github-operations[bot] avatar microsoftopensource avatar svrooij avatar vasjen avatar waldekmastykarz avatar zadokjoshua avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hack-together's Issues

Project: Sharepoint System.IO Abstraction deamon

Project name

msgraph-sharepoint-filesystem-deamon

Description

On the 'dev' branch

This is a deamon app sample that will connect to the MSGraph using the dotnet sdk, it will allow an authorised application to manage a file system drive in sharepoint, with the following methods on the interface IFileSystem:

  • File(exists, delete, upload, download)
  • Folder(exists, deleteAllItems, create)

Repo URL

https://github.com/OzBob/hack-together/tree/ozbob/dev

Team members

OzBob

Project: M365AIMate

Project name

M365AIMate

Description

M365AIMate is a tool to help you to get quickly up to speed with a demo environment for Microsoft 365. The goal is to have a tool that creates a defined environment for you to showcase the capabilities of Microsoft 365 and also adds initial content to the environment.

The Microsoft 365 objects are created using the Microsoft Graph API and PnP.Core, and the content is created by using OpenAI.

To get the most out of our efforts, the solution is split up into different projects. The main project is the M365AIMate.Core project. This project contains the code to create the environment and the content. The M365AIMate.Core project is a class library that can be used in other projects. The M365AIMate.Console project is a console application that uses the M365AIMate.Core project to create the environment and the content during testing and development. The M365AIMate.TeamsTab project is a Teams Tab UI that uses the M365AIMate.Core project to create the environment and the content inside a Teams Tab.

We also want to have test coverage for our core project. Therfore M365AIMate.Core.Tests project contains the tests for the M365AIMate.Core project.

We plan to continue this project after the hack-together, so let's see how far we can take it until the 15th of March.

Repo URL

https://github.com/selectedtech/M365AIMate

Team members

appieschot, RickVanRousselt, stephanbisser, thomyg

Project: Cosmail - Email client

Project name

Cosmail

Description

Simple email client build on MAUI + Blazor + Microsoft Graph to load data (later maybe I'll add Google). Now it don't do a lot of thing and I don't expect to do a lot more till 15th because of not enough freetime. It is more like Hello World thingy.
But the plan is to create it maximally customizable:

  • Custom CSS (to flag important email and colorize them on mood or whatever).
  • Custom filters and actions writen in C# snippets (I <3 C#). Maybe not supported on every platform?
  • Custom notifications (I hope MAUI allows it).
  • Search using C#. Sometime it is hard for me to find the mail I'm looking for. At the moment it show iframe previews. I was suprised how easy it was to show something like that.
  • And who knows what else will come to mind... :)

Repo URL

https://github.com/lordfanger/Cosmail

Team members

lordfanger

Project: A smarter meeting availability scheduling API

Project name

Meeting Scheduler

Description

The project is an Azure Functions API that sits on top of the Microsoft Graph APIs that can check calendars of multiple users within a Microsoft 365 tenant for a specific duration within a period (start and end time) and find availability for the best time for a potential meeting.

This request takes into consideration each participant's schedules, as well as including everyone's time zone to ensure that the times available are most convenient for everyone.

Repo URL

https://github.com/jamesmcroft/msgraph-meeting-scheduler

Team members

jamesmcroft

Project: Snitch - Team monitoring tool using Graph SDK

Project name

Snitch

Description

Snitch is a Blazor WASM app that utilizes Microsoft Graph SDK to monitor the activity of a managers team. If you think someone on your team is slacking off then this is the solution for you! Snitch uses the functionality provided by Microsoft Graph to pull in a list of a managers direct reports and polls the user's Microsoft Teams availability to check if they are away from their computer. As the data is collected it provides a raw view of activity time data as well as a graphical view of users presence over the period of time they're being monitored. If someone on my team is reading this, I promise I'll never use this in real life. Laughs manically and strokes fluffy white cat

To setup testing in your own Azure development environment just add a Azure app registration with the appropriate Graph permissions and Add the ClientID of that app to the appsettings.json file in the project where it currently says "APP_CLIENT_ID_GOES_HERE".

Video of usage: https://youtu.be/mCeEMXt7Z98

Repo URL

https://github.com/DrGav/Graph-Hackathon-Snitch

Team members

DrGav

Project: Team contribution report

Project name

Team contribution report

Description

I've written a small console app to produce reports based on all the teams a user is in to show how much a user messages each team and what percentage grouped by date, to get an insight into where a user is spending their time compared to their peers and how active in each of the teams a user is compared to their peers.

More information can be found in the repo's README.md

Repo URL

https://github.com/csferns/graphhack

Team members

csferns

Project: Orders TODO

Project name

Orders TODO

Description

This code is a sample implementation of using Azure Graph API to manage tasks in a Todo List. It uses the Microsoft Graph .NET SDK to interact with the Graph API.

The main purpose of this code is to create and manage tasks in a Todo List. In this example, the code creates a Todo List named "Orders" if it doesn't exist and then adds a new task with random order details to the "Orders" list.

The idea is to connect this to an API that will receive orders from an e-commerce website and will create the corresponding one for the owner of the shop or team to prepare and ship the order.

Repo URL

https://github.com/theodosiskats/orders-todo

Team members

theodosiskats

Thanks for the suggestion!

Thanks for the suggestion!

How do you think CLI should warn about this: by printing a message to stderr and proceeding immediately, or by requiring you to confirm a potentially dangerous action?

Originally posted by @mislav in cli/cli#6598 (comment)

Project: Microsoft Graph API Dashboard

Project name

Microsoft Graph API Dashboard

Description

Microsoft Graph Dashboard
.Net SDK and Microsoft Graph API drives the app. The app displays the unread emails, upcoming meetings for the day, upload or download files from the OneDrive.
App also in the home page, it displays wishes on Hired Date and on birthday of the user.

What the project does?

  • Once you're logged in you should see your user name displayed with the profile photo
  • Dashboard: If the user’s birthday is the current day, Birthday wish message will be displayed.
  • Dashboard: If the user’s hired date is the current day, Congratulations message will be displayed.
  • Email section: Unread mails will be displayed.
  • Files section: Displays available files from OneDrive, with an option to upload files from local to Onedrive as well to download from OneDrive to local drive.
  • Under the Calendar section, upcoming meetings for the day will be displayed.
  • Sign Out option is provided in the top right corner in the dropdown.
  • Click on the menu items at the top to view the user's email, calendar, and files (you may need to add mail
    messages, calendar events, and files for the user if you don't see any data

Repo URL

https://github.com/sumathyg/GraphAPIDashboard

Team members

Sumathy Gunaseelan

Project: Azure Serverless File Conversion using Graph

Project name

AzureServerlessFileConverter

Description

Use Azure Functions, Graph and Onedrive to convert documents, ppts, excels to PDF

This repo is an attempt to use the world of Microsoft serverless technologies and using the Microsoft suite - Azure, Graph, Microsoft 365 to do the same.

Built on C#, the code relies on Azure Functions, GraphAPI, Sharepoint and OneDrive and handles conversion of files greater than 4MB

Repo URL

https://github.com/nipunojha/AzureServerlessFileConverter

Team members

me

Project: SMS Identity Verification

Project name

SMS Identity Verifier

Description

This tool was originally featured on my blog here: https://mspautomator.com/2022/08/27/one-click-user-identity-verification-from-halopsa/

How do you know that person calling your helpdesk is who they say they are? Social engineering a helpdesk employee is a highly effective method of bypassing physical and logical access controls to breach an environment. This is a big enough problem in single silo organizations that have internal IT teams, but it presents a much larger attack surface for an MSP. You can’t β€œknow” every one of your thousands of end users at clients, and that’s especially true for new employees joining your helpdesk team and starting from zero. Today we’re going to take a look at a creative way to make your own user identity verification system that avoids some of the pitfalls of commercially available products and harnesses Twilio, Microsoft Graph, and Azure Automation runbooks all from one click inside HaloPSA.

Repo URL

https://github.com/mspautomator/SMSIdentityVerification

Team members

mspautomator, cscaminaci

Project: EmailFilter

Project name

MS Email Helpler

Description

Two Main Functions

  • Users can use this simple console interface to filter a customizable number of emails from a certain sender's domain once logged in.

  • After retrieving emails, users will also have the ability to delete them all together.

Repo URL

https://github.com/Brucegyx/EmailFilter

Team members

Yexuan Gao

Project: Menu driven .NET console app using MS Graph

Project name

.NETConsoleAppWithMSGraph

Description

.NETConsoleAppWithMSGraph

It is a basic Menu Driven Console Application using .NET & Microsoft Graph.
First Authorization of client takes place.
(A code will be given and the user need to log in their Microsoft account through https://microsoft.com/devicelogin )
After accepting the conditions close the sign in page.
Then a greeting displaying your Name, Id and Mail ID displays on console.
A menu appears below and choose the options accordingly to perform operations with it.

  • Option 0 : To exit from the application.
  • Option 1 : To Display access token.
  • Option 2 : To List users inbox (up to 25 inbox mails) in descending order of Receiving email.
  • Option 3 : To send email to your self.
  • Option 4 : To make a graph call - Here Calendar View is used
  • Any other key to get a default message.

For The Application : I followed Microsoft Documentation on Build .NET apps with Microsoft Graph and other documentations of MSGraph.
My App is registered with Azure Active Directory

The Working of the App is given below :
(Login through Microsoft account only for the app to work properly)
Screenshot (46)
Screenshot (48)
Screenshot (50)

Hack Together: Microsoft Graph and .NET

Video Walkthrough

Video Walkthrough of My Console Application

Repo URL

https://github.com/Vedshruti-11/.NETConsoleAppWithMSGraph

Team members

Vedshruti-11

Question: Use v1.0 and beta endpoints in one project

Just wanted to raise some more "discussions" here and ask a question (and give one answer how I handle myself).

Anyone using v1.0 AND beta endpoint together in the own project?
How do you handle?
Do you use the new published 5.0.0 Graph .NET SDK package which simplifies it a bit?
Do you "mix" older <=4.54.0 beta and v1.0 package?

I'd like to use the 5.0.0 but cannot due to one bug exactly in the beta endpoint I want to use AND
because I have a Teams project and there is still a dependency with TeamsFx and 4.54.0
So I decided (also always in the past when there was no 5.x.x) to mix with HttpClient.
So (not only!) to fulfill the conditions of hack-together I make all my v1.0 calls with .NET SDK and only one call (beta) I make via REST and the HttpClient

Would love to hear your feedback. Concerns, different approaches and why? Helpful for you?

Test

Project name

Test

Description

This is a test for GitHub, learning how it all works.

Repo URL

Bbbb.com

Team members

G

Project: Analyse, Estimate and Connect for health related issues

Project name

EstimateCostForDiseases

Description

In today's world, the cost of prescription, various medical commodities have been increasingly high and sometimes it is not possible for the common man to afford. While there are many non-profit orgs, we would like to track and dig deeper and help to get the least cost diagnosis for anyone aspiring for.

Analyze the current costs for various diseases, surgeries that are being charged today as a part of all the orgs (government / private) hospitals.
Using MicrosoftGraph to compute the least cost locale (hospital) for a person with the particular issue.
Use Graph if possible to connect the patient in emergency (atleast the phone number) to a doctor who can immediately consult
Make an ML model to analyze the stroke deaths that have happened within seconds and try to come up with an approach that will prevent the same / give a solution for the same.
Use Azure, Graph and try making a GPT that resembles the ChatGPT but this time for the health care industry called HealthGPT / DoctorGPT.

Repo URL

https://github.com/vishalbhatd123456/vishalbhatd123456-EstimateCostForDiseases

Team members

vishalbhatd123456, Saurabh7379

Project: AVD Session Manager

Project name

AVD Session Manager

Description

AVD Session Manager is a Blazor server application built on Mudblazor and the Azure .NET SDK to more easily control user sessions in Azure Virtual Desktop. This is a sanitized version of my in house production tooling for Microsoft Hack Together 2023.

This app is designed to be CSP/MSP friendly, meaning it authenticates the user to the CSP tenant, and then uses an app registration in the target tenant to interact with AVD. Eventually, this app will allow multitenant management of AVD for MSPs from one central app instead of market alternatives like Nerdio that require an appservice to be stood up in each tenant you manage.

Repo URL

https://github.com/cscaminaci/AVD-Session-Manager

Team members

cscaminaci, mspautomator (me but public repo)

Project: Magic Note app to plan the day efficiently with AI & MS Graph [Completed]

Project name

Magic Note - Hack Together

Description

Magic Note allows users to plan their days in a joyful and productive way with the power of Microsoft Graph and AI (Of course the implementation is entirely in .NET)

GET IT NOW FOR WINDOWS

Windows

[v1.1.4 Hackathon version for Windows]

Windows App Overview

The Windows app overview:
WinUI

The Problem

Most productive people would like to have the upcoming busy day planned carefully the night before. The process is needed but it's tough, why? Well! we have the tasks we want to do in mind but just thoughts, that's why we take notes and create To-Do lists. The problem happens we open the calendar and the To-Do lists app on our smart device and start adding some important events, meetings, tasks, or other reminders for the upcoming day.

How do users do it without Magic Note? Let's see the steps
The 10 things to do the next day (3 events, 2 meetings, 5 to-do items) All thoughts in the brain yet

  • Open the Calendar app on the phone
  • Navigate to the next day
  • Click Add New Event
  • Populate the title
  • Define the start time
  • Define the end time
  • Click save
  • Repeat the same for the other 2 events if the user doesn't forget any.
  • Repeat the same for the meetings
  • Open the To-Do app
  • Enter the description of the first to-do item
  • Hit save
  • Repeat the same for the remaining 4 items if the user still remembers all of them.

The process is boring and inefficient.

Writing down everything in mind helps us express our ideas and keep them saved outside our minds, many people write their diaries with a pen and a sheet of paper, that's quick and indestructible. But the paper won't send me a notification 1 hour before the event or send an email for the person I want to meet with if I typed the meeting on that piece of paper.

Here is where Magic Note comes into play.
Let's see how the same will be achieved 10x more efficiently using the Magic Note

The Solution

The app is only a single big text box on the left, that's it all. The user starts typing what he/she is up to for the next day in their daily conversational English as if the user is writing his/her diary or a list of tasks on a sheet of paper. The writing is quick, with no text fields to fill, no dates to select, and no save buttons to click. List everything in mind in that text box. Once everything is done, the user clicks Plan. Magic Note will send that text to the server, understand its content using AI (SEE BELOW FOR TECHNOLOGY DETAILS), and build a plan out of the ideas inside (creating an event at this time, creating a meeting with a person, adding a to-do item ..etc.). After the server prepares the plan, the user will see a set of cards each representing either an event to be added to the calendar, scheduling a meeting with someone, or adding a to-do item.
Instead of the user having to open every app (Calendar, Teams, and To-Do) to insert them, the user now has a plan in front and he/she should decide if this is correct and make adjustments if needed. Once the user is satisfied with the plan, click Submit and the Magic Note will use Microsoft Graph to populate all this stuff.
The user starts the next day with the To-Do app populated, the calendar full of the events and the meeting needed to be done in that day.

How the App Technically Works with Graph API

Magic note technical diagram

Microsoft Graph API which is the core of the #HackTogether hackathon is used as a main component in the system.
The majority of users worldwide use Microsoft accounts to manage their meetings, and events, store contacts, and keep tracking of their progress using Microsoft To-Do but the process of adding those resources through this app on a daily bases and in a consistent fashion is tough.
So, how Magic Note is utilizing Graph to make people more productive?

  1. When the user mentions in the note that he/she wants to schedule a meeting and mentions a name, the app during the planning the app is trying to search for the mentioned names in the Contacts of the user, and if Graph returns that the name is found, it automatically populates the email and the name in the result.
  2. After the user reviews the plan and makes sure everything is great, the user clicks Looks good to me, then the app is using Graph API to:
    • Fetch the user timezone
    • Fetch the Tasks list in the user's to-do
    • Create a batch content
    • Group all the requests to submit the To-Do items in the batch
    • Group all the requests to add the meetings to the batch
    • Group all the requests to submit the events in the batch
    • Post the batch in a single request

Technologies Used

Because this Hackathon is for fun, learning, and everything Microsoft and because I'm the biggest Microsoft fan ever. I decided to build this demo strictly for MICROSOFT PEOPLE (Users and Developers) πŸ˜‚πŸ˜Ž
The is built with .NET and Azure and divided into the following:

  • Client-side desktop: WinUI app for Windows 10 & 11
  • Client-side mobile: .NET MAUI app for Android only and for Microsoft Surface Duo specifically (The app suits the two screens approached perfectly, write on the left and see the plan on the right)
  • Server-side: Set of ASP.NET Core Minimal API
  • Microsoft Graph API
  • For language understanding AI: I used Azure Conversation Language Service

More details about the architecture are available in the repo πŸš€πŸš€πŸš€

Repo URL

https://github.com/aksoftware98/hack-together23

Team members

Ahmad Mozaffar (GitHub: aksoftware98)

Project: Simple API to schedule reviews

Project name

GraphReview

Description

Simple API used to schedule review meetings and send emails via MicrosoftGraph.

224314726-03609490-defe-402c-8fc2-ebb723fa2942

You need an appsettings.json file with the following settings for the app to work:

  "ConnectionStrings": {
    "SqlServer": "your-connection-string"
  },
  "MicrosofrGraph": {
    "TenantId": "your-tenant-id",
    "ClientId": "your-client-id",
    "ClientSecret": "your-client-secret",
    "DefaultSender": "your-default-email"
  }

Repo URL

https://github.com/Banovvv/GraphReview

Team members

https://github.com/Banovvv

Project: M365 Groups Manager

Project name

M365 Groups Manager

Description

Office 365 Groups is the foundational membership service, that drives all teamwork across Microsoft 365. Once in a group, we can get the benefits of the group-connected services like shared Outlook inbox, shared calendar, SharePoint site, Planner, Power BI, Yammer, and MS Teams.

This application gives a consolidated view of the Microsoft 365 groups owned by an user, as well they are member of it. This solution will help an individual to manage their group membership better.

This application will help organizations to achieve sustainability by ensuring the group well-being and reduce the carbon emissions by helping the owners to make quick decisions about the groups to manage and get rid off.

The application provides the below functionalities, to manage your groups better:

Role Delete group Leave group Add owners Add members
Group owner Yes Yes Yes Yes
Group member No Yes No No

More information and screenshots can be found in the repo's README.md

Repo URL

https://github.com/nanddeepn/hack-together-m365-groups-manager

Team members

smitanachan, nanddeepn

Project: MAPI Explorer

Project name

MAPI Explorer

Description

The application allows to access custom data for Outlook MAPI properties on message, event, calendar, mailFolder, contact and contactFolder resources. Not all Outlook MAPI properties are already exposed in the Microsoft Graph API metadata.

MAPI Explorer is .NET MAUI app for Windows that uses Graph API (latest .NET SDK version) to access single-value/multi-value extended properties.

The app allows to configure which MAPI properties will be displayed for specific resource and allows to define own custom named properties. The value of named MAPI properties can be edited.

Check the project for more details about all implemented features.

Repo URL

https://github.com/MartinM85/GraphMapiExplorer

Team members

MartinM85

Project: A Calendar and events application that is synced and integrated with Microsoft Outlook Calendar using Microsoft Graph API.

Project name

MLSA Blazor Outlook Calendar

Description

It's a Blazor Calendar and events application that is synced and integrated with Microsoft Outlook Calendar using Microsoft Graph API. It has a well-structured UI interface to enable you visualize your events clearly without missing any details.

Objectives

  • View all events on your calendar
  • Add events to my calendar
  • View a summary of events per day

Repo URL

https://github.com/kelcho-spense/MLSA-Blazor-Outlook-Calendar

Deployed URL

https://blazorhosting.z13.web.core.windows.net/#

Team members

It's a solo project.

Project: CSPLicenseInquiry

Project name

CSPLicenseInquiry

Description

License inquiry and report script for HaloPSA using Microsoft Graph for Hack Together 2023.

This tool runs as an Azure Runbook and is triggered via webhook from HaloPSA. The script uses a multitenant app registration to look up current user license assignments and attempts to find zombie accounts or accounts that are licensed but deactivated or deleted. This helps to scavenge available licenses during the onboarding process. The report is returned to HaloPSA as an HTML fragment embedded in a private note.

Repo URL

https://github.com/cscaminaci/CSPLicenseInquiry

Team members

cscaminaci

Project: SyncMateM365

Project name

SyncMateM365

Description

Below is an idea of the gist we are working on :) we have yet not committed anything to the repo.

Problem Statement -

As technical consultant who uses M365 Outlook, we face the challenge of managing multiple accounts for different clients or businesses across various tenants. Synchronizing my calendars across these accounts can be quite a task, making it difficult to keep track of my availability. To put it in Bruce Wayne's shoes, with multiple M365 accounts under different email addresses, this task can be quite daunting. Consider Batman has the following M365 accounts.

[email protected]

[email protected]

[email protected]

[email protected]

[email protected]

Imagine that Superman has sent a meeting request to [email protected] for a specific day and time (9-10 AM), requesting his help in saving Superman's mother from Lex Luthor. As a result, Batman's time in the Justice League calendar is blocked off, and other members such as Flash or Wonder Woman will see him as unavailable during that slot and choose another time for any upcoming meetings.

However, the directors at Wayne Enterprises wouldn't be aware of Batman's ongoing mission to save Martha and could potentially send a meeting request for the same day and time (9-10 AM) to [email protected]. This is because the slot would appear as available for that email account, even though Batman is already committed to the Justice League's mission. This would be the same for other tenants as well like thedarknight.com, dccomics.com, IamBatman.com

Well, it seems like Batman's schedule is as busy as his crime-fighting nights. Despite his heroic efforts, he'll have to decline the invitation and propose a new time that works for him. I mean, he has to juggle between all his Outlook accounts to find an available slot and let's face it, Batman doesn't have time for that. He's got more important things to do, like perfecting his Batarang throws and maintaining his chiseled abs.

The Solution

This is where the app shines and solves the problem. By signing into the app once with all of your multiple accounts, it will automatically subscribe to your calendar events for each added account. This allows the app to book your calendar time when an event is added, updated, or canceled in any one of your accounts. Here are the details of the app:

The app provides the ability to sign in to multiple Microsoft 365 Outlook accounts, allowing you to view a single calendar view across all your added accounts.

The calendar view includes legends to show events and meetings with distinct color codes, making it easier to differentiate between them. You can also remove any added account whenever you need to.

When an event is booked on one of your calendars, the app will mask the event in all other accounts with specific text, such as "Booked for another meeting." This ensures that cross-tenant data is not shared. Additionally, the app will create a placeholder meeting to prevent others from booking your time during the same slot across tenants.

To get change notifications, the app uses Graph API. It subscribes to changes on Microsoft Graph resources (specifically, on me/events) to ensure that all calendar events are up to date and accurately represented in the app.

Technical details

Below are high-level technical notes.

  • Front end as .NET Core web application to add Multiple accounts and calendar view and list of subscriptions/accounts with the ability to add/remove
  • Call GRAPH subscription API to subscribe to resource and ChangeType
  • Create an API (webhook) which will be called as Notification URL based on subscriptions
  • Store some information, using persistent storage (database TBD) to store the accounts data and subscription ids and other basic information and refresh tokens.
  • API (webhook) would be able to handle any notification (message passing) which would be done when anything changes in /events for all the accounts added.
  • Another custom API which would be called from the above webhook would handle logic to get the token and create events in all other relevant accounts.
  • As we are using the Deamon process(from the backend), we would be using the refresh token for each account to get the access token and create an event in that particular account.

Future Releases

This can be extended to the below Changes types also

  • Outlook Email messages
  • Teams Call Records(when someone is calling you)
  • Teams Chat(when someone is sending your chat messages
  • Teams channel message, when someone is mentioning you in channel conversation.

Repo URL

https://github.com/siddharth-vaghasia/SyncMateM365

Team members

siddharth-vaghasia, kunj-sangani, dharati1910, santoshsarnobat

Project: Personal scheduling with group collaboration

Project name

Stime

Description

The Personal Scheduling Algorithm with Group Studying or Working is a tool that optimizes the user's time by asking about their daily routine, work schedule, hobbies, and priorities. It categorizes activities and considers factors such as preferred time of day, duration of activities, and travel time. The project also includes collaborative features such as creating a meeting/chat, sharing files via OneDrive, scraping tasks based on meeting description from MS To Do, and creating a shared whiteboard with MS Whiteboard.

Repo URL

https://github.com/SSIvanov19/Hack-Together-Hackathon

Team members

[email protected], [email protected], [email protected], [email protected]

Project: Teams meeting scheduler console App

Project name

Teams meeting scheduler console App

Description

Project Name

Teams Meeting scheduler console App

Description

This .NET console application begins by retrieving the user's name and email ID via Microsoft Graph API and greeting them. It then assists the user in scheduling team meetings by prompting them to input details such as the meeting subject title, start date and time, and desired meeting duration. The application leverages the Microsoft Graph .NET SDK to schedule the meeting, and outputs a join URL for the Teams meeting which can be shared with guests.

Following is the Output of the Application

image

Hack Together: Microsoft Graph and .NET

Repo URL

https://github.com/Jatin-patil/hack-together

Team members

Jatin-patil

Project: Graph TicTacToe

Project name

Graph TicTacToe

Description

Graph TicTacToe is a Microsoft Graph based WinUI 3 app that allows users play Tic Tac Toe with each other. The state handling and user handling is using the OneDrive and Outlook Microsoft Graph APIs. Users can invite their contacts to play their game; game files are stored using their OneDrive account and shared with the user they invited.

Repo URL

https://github.com/chingucoding/GraphTicTacToe

Team members

chingucoding

Project: Visualize language usage from GitHub in Excel

Project name

GitHub Language Visualizer

Description

This project aims to analyze the languages used in all of your GitHub repositories and create a chart of the language distribution using Microsoft Graphs API. The project uses GitHub's API to retrieve the metadata of all your repositories, including the languages used in each repository. Then, it aggregates the language data to calculate the total number of repositories that use each language.

The project is implemented in .NET and uses the Octokit .NET library to interact with the GitHub API. The Octokit .NET library is a fully-featured GitHub API client library that allows developers to easily access and manipulate GitHub data.

The project makes use of Microsoft Graph to create a chart of the language distribution in Excel. Microsoft Graph is a powerful tool that allows developers to integrate Microsoft products and services into their applications, including Excel. By using Microsoft Graph, the project can easily create a chart in Excel that shows the language distribution of all your repositories.

Overall, this project provides an easy way to analyze the language distribution of all your GitHub repositories and visualize the results in Excel. It can be helpful for developers who want to understand the overall composition of their codebase and identify areas where they may need to focus their efforts.

Sample Image

Repo URL

https://github.com/sammychinedu2ky/MicrosoftGraphDotNet

Team members

sammychinedu2ky

Project: Speech 2 Todo

Project name

Speech 2 Todo

Description

What I built

I decided to work on a webapp that allows turn your speech into tasks in the Microsoft Todo app, it is basically an AI powered productivity app

How it works

You choose a project, you record your plans, you extract todos, and you add them to Microsoft Todos
Each project will end up with its own list, you can configure your projects in the app

Why I built it

I built it to help me plan my day on each project every morning, I thought of just doing standups on each projects I am interested in doing on that day and have GPT extract tasks out of the conversation, it is just a way faster and natural way for me to create todos

That's what I use it for, but you can use it for pretty much anything else, like talking about your chores, your meetings etc

What I built it with

I used Blazor Server App, Azure Speech Service for speech recognition, Open AI Api for extraction , TailwindCSS + DaisyUI for styling

More details

I've added a lot more details and a demo in the readme page of my repository, so feel free to have a look 😁

Repo URL

https://github.com/KenjiPcx/.NET-Graph-Hack-Together

Team members

Kenji Phang (KenjiPcx)

Project: Simple Employee Advocacy Tool

Project name

Feed To Teams

Description

Employee advocacy is the practice of empowering and encouraging employees to share positive and authentic content about their employer on social media, in personal conversations, or through other means of communication, to promote the company's brand, products, and services.

This is an employee advocacy solution that enables companies to amplify their blog content via Microsoft Teams to employees, customers, and stakeholders and help them to share on social media. It's a user-friendly tool designed to help organizations increase their brand visibility.

The solution is created using ASP.NET Core MVC and Azure Functions.

How it works.

By logging into the application, administrators can configure their website's RSS feed to specific teams and channels. At regular intervals, the Azure function is activated, it fetches the latest content, parses the content and it delivers the most recent content to the designated team channels with share buttons.

teamschannelmessage

Repo URL

https://github.com/anuraj/feed-to-teams

Team members

anuraj

Project: 365 License Monitor

Project name

365 License Monitor

Description

365 License Monitor is a multi-tenant Blazor PWA, which allows you to easily view the status of your M365 licenses. This makes it easier to:
- Quickly identify the status of licenses which are important, but filtering those that aren't.
- Easily see which licenses have run out, or if there are spare.

This can help larger organisations either maintain an adequate pool of spare licenses for new joiners, or smaller organisations save money by avoiding waste.

Features:
- Multi tenant
- Blazor WASM PWA - no install required
- Responsive design
- Persistent settings using browser Local Storage

The app is published at https://365licensemonitor.app.cloudrun.io/. You need to be a Global Admin to register the app in your tenant (tick the box to consent for your organisation).

Repo URL

https://github.com/cloudhal/365LicenseMonitor

Team members

cloudhal

Screenshots and video

App Screenshot

VIDEO OVERVIEW

Project: Simple Todo Console

Project name

Simple Todo Console App

Description

This is a simple Microsoft Todo Console app that is developed using Microsoft Graph .NET v5 SDK. It's login using Device Code and will save the access token into cross-platform cache MSAL so you don't need to login every time. The functions and menus available for the Todo console app is like below:

0. Exit
1. Display access token
2. Clear access token cache
3. Clear screen
4. List All To Do Task Lists
5. List All To Do Tasks
6. Display To Do Task
7. Add To Do Task
8. Update To Do Task

It provides some basic Todo info/functions for you to view/add/update via console app. Besides that, every time you start the console, it will display upcoming task(s) due within two days. The listing function supports paging and for search Todo task, it will either get the first matched task or display TOP x matched tasks for you to select.

Repo URL

https://github.com/sanme98/hack-together-simple-todo-console

Team members

sanme98

Project: Teams tab to convert numerous supported source file types to several target file types (PDF, HTML, JPG)

Project name

tab-sso-graph-file-conversion

Description

This Teams Tab enables a user to upload a supported (depending on the target) file type via drag and drop while the uploaded file will be converted as PDF, HTML, JPG depending on user's selection. In Teams context (as configurable Tab) it uses the current Teams' site and the default drive. In case of a personal tab the SharePoint root site's default drive' It uses the following capabilities (mostly) on behalf of Microsoft Graph:

  • Use HTML5 drag and drop event handling
  • Teams SSO and O-B-O flow access token generation in backend
  • Teams Toolkit for Visual Studio
  • Writing normal files smaller 4MB
  • Writing files bigger than 4MB with a resumable upload
  • Retrieving files with format=pdf/html/jpg conversion which is currently supported only with Graph beta endpoint
  • Use Fluent UI Web Components with Blazor

Hack-together requirements

  • Used Microsoft Graph .NET SDK 4.54.0 due to blocking issue with TeamsFx and issue with used beta-endpoint)
  • Used HttpClient with REST for one endpoint due to v1.0 / beta mix and above issue with used beta-endpoint)

Extend sample

  • Convert from Teams Tab to stand-alone SPA e.g.
  • Once above issues solved convert to Microsoft Graph .NET SDK >=5.0.0
  • Extend to GLB conversion (was simply not familiar with that file type(s) and had no samples to test)

Upload/convert file to JPG with drag&drop

Repo URL

https://github.com/mmsharepoint/tab-sso-graph-file-conversion

Team members

mmsharepoint

Project: Aware is a sidecar to help you triage when you need a break

Project name

mental healt aware

Description

The problem we're solving

These days is very common to see people struggling with depression and mental health. The WHO (World Health Organization) said we need to transform mental health, we need to be more aware of our current mental state and be willing to take a break.

The solution?

Create a WebAPI to access the user's calendar and manage the coming events and reschedule if needed so he/she can take a small or long break.

Features

  • Ask the user how is feeling right now.
  • Make a quick 20min meeting in the user calendar, so he/she can take a break.
  • Block the calendar with an all-day appointment when the user says is not feeling well.

Repo URL

https://github.com/felipeschneider88/mental-health-aware

Team members

felipeschneider88

Project: Graph SDK Batching improvement

Project name

Batching improvements in the Graph SDK SvRooij.Graph.Batching

Description

The Graph SDK has support for Batching, which is a great idea when you are doing a lot of requests to Graph. By batching requests you can achieve much higher throughput.

GraphServiceClient extension to help with Batching

The batch implementation in the GraphServiceClient feels incomplete, by default the GraphServiceClient let's you combine up to 20 requests before throwing an exception. By using this extension you can combine "unlimited" requests and have this extension automatically splits up the requests in multiple batches. While staying very close to the original implementation.

For now this is just an additional nuget package, if a lot of people like it I might create a pr to have this included in the actual client.

After a lot of positive responses and this issue this code is now integrated in the Microsoft.Graph.Core started from version 3.0.1, which is in turn used by Microsoft.Graph version 5.0.1

Useful resources

In this project everybody can check-out the following resources to use themself

Watch the video

Repo URL

https://github.com/svrooij/msgraph-sdk-dotnet-batching/

Team members

svrooij

Project: Checking availability of a coworker with the option to send quick messages.

Project name: Presly

Description

I have created an application (for this event needs I am using .NET/Blazor) which will allow me to see instantly if person I am looking will be available soon - and if someone will be available, I will show the time slots when there is possibility to reach out with option to quick message on Teams/E-mail with some simple message.

Purpose

Nowadays I am usually checking folks calendars and I am trying to see when they will be able to talk with me. It is usually time consuming. I just wanted to have compact overview of my week and also ability to quickly check availability time slots of my coworkers.

Details

Please check out Read.md file in the repository. There is a lot more information's about all technical aspects and whole flow is presented step by step along with some screen dumps.

Video

General flow:

2023-03-13-11-08-27.mp4

Presences changed:

2023-03-13-11-13-06.mp4

Repo URL

https://github.com/KamilSiebyla/MHT

Team members

KamilSiebyla

Project: Presence to Home Assistant

Project name

Presence to Home Assistant

Description

I built an system tray app (windows forms) that using Microsoft Graph and Home Assistants API controls a the color of a lamp that sits outside my office - that way others know before entering the office if I'm in a call or not

The code is designed to be easily reused to do different things, the PresenceWatcher that is responsable for keeping an eye on they users presence accepts multiple subscribers, so if you wanted to control several lights, you could do that, if you wanted to integrate to a timetracking system you could do that, possibilities are endless

Repo URL

https://github.com/Tanddant/Teams-Presence-to-Home-Assistant

Team members

Tanddant

Project: Visitor registration system

Project name

VisitorGraph

Description

Say goodbye to the old way of checking in guests. With VisitorGraph, your visitors can now sign in electronically, directly informing the person they're visiting. It's fast, it's efficient, and it's modern. Upgrade your office today with VisitorGraph.

Features:

  • Look up staff in Azure AD using Microsoft Graph
  • Sign in when you arrive for an appointment
  • Sends a message on Teams to the person your are visiting, also using Microsoft Graph
  • Sign out when you leave
  • Visits recorded in a database, so for example in the event of an evacuation emergency, you can easily check the logs to see who is in the building

Repo URL

https://github.com/matt-goldman/VisitorGraph

Team members

github.com/matt-goldman

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.