https://github.com/fmeringdal/nettu-scheduler Skip to content Sign up Sign up * Why GitHub? Features - + Mobile - + Actions - + Codespaces - + Packages - + Security - + Code review - + Project management - + Integrations - + GitHub Sponsors - + Customer stories- * Team * Enterprise * Explore + Explore GitHub - Learn and contribute + Topics - + Collections - + Trending - + Learning Lab - + Open source guides - Connect with others + The ReadME Project - + Events - + Community forum - + GitHub Education - + GitHub Stars program - * Marketplace * Pricing Plans - + Compare plans - + Contact Sales - + Education - [ ] [search-key] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this user All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up Sign up {{ message }} fmeringdal / nettu-scheduler * Notifications * Star 282 * Fork 7 A self-hosted calendar and scheduler server. MIT License 282 stars 7 forks Star Notifications Code Issues 0 Pull requests 0 Actions Projects 0 Security Insights More * Code * Issues * Pull requests * Actions * Projects * Security * Insights master Switch branches/tags [ ] Branches Tags Nothing to show {{ refName }} default View all branches Nothing to show {{ refName }} default View all tags 1 branch 0 tags Go to file Code Clone HTTPS GitHub CLI [https://github.com/f] Use Git or checkout with SVN using the web URL. [gh repo clone fmerin] Work fast with our official CLI. Learn more. * Open with GitHub Desktop * Download ZIP Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Go back Launching Xcode If nothing happens, download Xcode and try again. Go back Launching Visual Studio If nothing happens, download the GitHub extension for Visual Studio and try again. Go back Latest commit @fmeringdal fmeringdal Merge pull request #2 from adyavanapalli/master ... c947372 Mar 29, 2021 Merge pull request #2 from adyavanapalli/master docs(spelling): Fix typo in `communicate` spelling. c947372 Git stats * 392 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows chkp Mar 15, 2021 api_tests fixes Mar 19, 2021 docs docs(spelling): Fix typo in `communicate` spelling. Mar 29, 2021 examples Update booking.md Mar 24, 2021 scheduler docs Mar 20, 2021 .gitignore reminders seems to be working, but more tests are needed Feb 24, 2021 .travis.yml ci Jan 8, 2021 LICENSE Create LICENSE Mar 4, 2021 README.md readme Mar 22, 2021 View code Nettu scheduler Overview Features Table of contents Quick start Examples Contributing License Special thanks README.md logo Nettu scheduler MIT licensed Build status codecov Overview Nettu scheduler is a self-hosted calendar and scheduler server that aims to provide the building blocks for building calendar / booking apps with ease. It has a simple REST API and also a JavaScript SDK and Rust SDK. It supports authentication through api keys for server - server communication and JSON Web Tokens for browser - server communication. Features * Booking: Create a Service and register Users on it to make them bookable. * Calendar Events: Supports recurrence rules, flexible querying and reminders. * Calendars: For grouping Calendar Events. * Freebusy: Find out when Users are free and when they are busy. * Metadata queries: Add key-value metadata to your resources and then query on that metadata * Webhooks: Notifying your server about Calendar Event reminders. Application flow Table of contents * Quick start * Examples * Contributing * License * Special thanks Quick start First of all we will need a running instance of the server. The quickest way to start one is with docker: docker run -p 5000:5000 fmeringdal/nettu-scheduler:latest or if you want to build it yourself with cargo: cd scheduler cargo run inmemory Both of these methods will start the server with an inmemory data store which should never be used in production, but is good enough while just playing around. For information about setting up this server for deployment, read here. Now when we have the server running we will need an Account. To create an Account we will need the CREATE_ACCOUNT_SECRET_CODE which you will find in the server logs during startup (it can also be set as an environment variable). curl -X POST -H "Content-Type: application/json" -d '{"code": "REPLACE_ME"}' -v http://localhost:5000/api/v1/account The previous command will create an Account and the associated secretApiKey which is all you need when your application is going to communicate with the Nettu Scheduler server. Quick example of how to create and query a user export SECRET_API_KEY="REPLACE_ME" # Create a user with metadata curl -X POST -H "Content-Type: application/json" -H "x-api-key: $SECRET_API_KEY" -d '{"metadata": { "groupId": "123" }}' http://localhost:5000/api/v1/user # Get users by metadata curl -H "x-api-key: $SECRET_API_KEY" "http://localhost:5000/api/v1/user/meta?key=groupId&value=123" Please see below for links to more examples. Examples * Calendars and Events * Booking * Reminders * Creating JWT for end-users Contributing Contributions are welcome and are greatly appreciated! License MIT Special thanks * Lemmy for inspiration on how to use cargo workspace to organize a web app in rust. * The author of this blog post for an excellent introduction on how to do telemetry in rust. About A self-hosted calendar and scheduler server. Topics rust self-hosted calendars rrule scheduler-server Resources Readme License MIT License Releases No releases published Packages 0 No packages published Contributors 2 * @fmeringdal fmeringdal Fredrik Meringdal * @adyavanapalli adyavanapalli Anand Dyavanapalli Languages * Rust 95.4% * TypeScript 3.9% * Other 0.7% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.