Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/roerohan/meetingsapi

A simple meetings API built using Go.
https://github.com/roerohan/meetingsapi

api backend go golang mongo-driver mongodb website

Last synced: about 2 months ago
JSON representation

A simple meetings API built using Go.

Awesome Lists containing this project

README

        

[![Issues][issues-shield]][issues-url]




MeetingsAPI


A simple API built using Go.


Explore the docs »




View Demo
·
Report Bug
·
Request Feature

## Table of Contents

* [About the Project](#about-the-project)
* [Built With](#built-with)
* [Getting Started](#getting-started)
* [Prerequisites](#prerequisites)
* [Installation](#installation)
* [Usage](#usage)
* [Roadmap](#roadmap)
* [Contributing](#contributing)
* [License](#license)
* [Contributors](#contributors-)

## About The Project

A simple REST API is built for scheduling meetings as a starter project for Go. This has routes such as `/meetings` and `/meeting` to add meetings, and get meetings by their `id`. You can also filter meetings for a participant and by the start time and end time of the meeting.

### Built With

* [Go](https://golang.org/)
* [MongoDB](https://www.mongodb.com/)
* [Mongo-driver Go package](https://github.com/mongodb/mongo-go-driver)

## Getting Started

To get a local copy up and running follow these simple steps.

### Prerequisites

- Go
- MongoDB

### Installation

1. Clone the Repo
```sh
git clone https://github.com/roerohan/MeetingsAPI.git
```
2. Install Go packages
```sh
go mod tidy
```

## Usage

To run the project, you can use:

```sh
go run src/main.go
```

1. POST `/meetings`: This route accepts a JSON of the following format:

```json
{
"title": "something",
"participants": [
{
"name": "something",
"email": "something",
"rsvp": "Yes"
}
],
"startTime": 1603059170289,
"endTime": 1603059290289
}
```
> Note: This route ensures that a new meeting can't be added if a participant of the new meeting has already RSVP-ed "Yes" or "Maybe" to a different meeting. If it does, the list of meetings which conflict with the current meeting is returned.

2. GET `/meetings?participant=`: This route takes the email ID of the participant and a list of meetings which the participant is included in, irrespective of the RSVP status.

3. GET `/meetings?start=&end=`: This route returns a list of all meetings that occur in the time duration between `start` and `end`.

4. GET `/meeting/`: This route returns the meeting containing the ID as specified in the request parameter.

## Roadmap

See the [open issues](https://github.com/roerohan/MeetingsAPI/issues) for a list of proposed features (and known issues).

## Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'feat: Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

You are requested to follow the contribution guidelines specified in [CONTRIBUTING.md](./CONTRIBUTING.md) while contributing to the project :smile:.

## License

Distributed under the MIT License. See [`LICENSE`](./LICENSE) for more information.

[roerohan-url]: https://roerohan.github.io
[issues-shield]: https://img.shields.io/github/issues/othneildrew/Best-README-Template.svg?style=flat-square
[issues-url]: https://github.com/roerohan/MeetingsAPI/issues