{"id":22712147,"url":"https://github.com/buildit/meetomatic","last_synced_at":"2025-03-29T22:21:38.653Z","repository":{"id":40951039,"uuid":"172699853","full_name":"buildit/meetomatic","owner":"buildit","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-04T22:52:00.000Z","size":4712,"stargazers_count":2,"open_issues_count":20,"forks_count":0,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-02-04T23:31:32.329Z","etag":null,"topics":["buildit-gravity-consumer","distributed","meetings","realtime-collaboration"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buildit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-26T11:37:00.000Z","updated_at":"2019-11-01T14:38:28.000Z","dependencies_parsed_at":"2023-02-02T22:45:51.965Z","dependency_job_id":null,"html_url":"https://github.com/buildit/meetomatic","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildit%2Fmeetomatic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildit%2Fmeetomatic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildit%2Fmeetomatic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buildit%2Fmeetomatic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buildit","download_url":"https://codeload.github.com/buildit/meetomatic/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246250086,"owners_count":20747293,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["buildit-gravity-consumer","distributed","meetings","realtime-collaboration"],"created_at":"2024-12-10T13:09:30.943Z","updated_at":"2025-03-29T22:21:38.627Z","avatar_url":"https://github.com/buildit.png","language":"TypeScript","readme":"# meetomatic\n\na simple and necessary tool for distributed meetings, embracing our in-house design system, Gravity.\n\n## Requirements\n\nThe Prisma server and database run in docker container so you need to install [Docker](https://docs.docker.com/docker-for-mac/install/)\n\n`gravity-web-ui` requires Node.js version 8 installed. You can either install version 8 and use [nvm](https://github.com/creationix/nvm) to manage your node versions.\n\n    $ nvm install\n\nand before running any other npm command, run\n\n    $ nvm use\n\n## Build and setup\n\n### Prisma and database\n\nTo run the Prisma server and setup the databaes run\n\n    $ docker-compose up -d\n\nThis will start the prisma and postgres containers.\n\nTo deploy the database run\n\n    $ cd server/graph-server\n    $ prisma deploy\n\nNote you only have to run this command when setting up for the first time or if you change the Prisma schema.  \nThis will automatically generate the Prisma .ts files\n\n### Seeding the database with default data\n\nWhen you first deploy the prisma database it will seed the database with a system user. If you need to re-seed the database run this command from the `graph-server` folder\n\n    $ prisma seed\n\n### Resetting the database\n\nTo clear all data from the database run\n\n    $ prisma reset \u0026\u0026 prisma seed\n\n### Meet-o-matic server\n\nTo run the meet-o-matic service run\n\n    $ npm run dev\n\n### API Server GraphQl\n\nAt the API server we use [`type-graphql`](https://github.com/19majkel94/type-graphql) to define our graphql schema. This allows us to take advantage of Typescript and write stronly typed resolvers.\n\nWhen you update the graphql type definition the server will generate a `schema.gql` file which is then used by the client. see below\n\nFollow recommendations laid out in [this article](https://blog.apollographql.com/designing-graphql-mutations-e09de826ed97) when designing your schema.\n\n### Client GraphQl Types\n\nThe client uses Apollo client at the front end. It makes use of strongly typed query and mutations by using the apollo codegen functionality\n\nIf you write a grahpql query in the client pages run the following command to generate the Typescript types for your query.\n\n    $ npm run generate-graphql-types\n\nYou can then use the generated types to strongly type your Query and Mutations\n\n```javascript\nconst LOGIN_USER = gql`\n  mutation Login($email: String!, $password: String!) {\n    login(input: { email: $email, password: $password }) {\n      token\n      user {\n        name\n        id\n        email\n      }\n    }\n  }\n`;\n\nclass LoginMutation extends Mutation\u003cLogin, LoginVariables\u003e {}\n```\n\nThen use it:\n\n```javascript\n\u003cLoginMutation mutation={LOGIN_USER} onCompleted={this._handleLoginComplete}\u003e\n  {function(loginUser, { loading, error }) {\n    return (\n      \u003cLoginForm\n        error={error \u0026\u0026 error.graphQLErrors[0].message}\n        isProcessing={loading}\n        login={(email, password) =\u003e\n          loginUser({ variables: { email, password } })\n        }\n      /\u003e\n    );\n  }}\n\u003c/LoginMutation\u003e\n```\n\nTODO:\n\n- Document service\n- How to write and run tests\n- How to debug\n\n## Managing the docker containers\n\nTo stop the docker containers run\n\n    $ dcoker-compose down\n\nTo list all containers run\n\n    $ docker container ls -a\n\nTo delete the containers run\n\n    $ docker container rm \u003cname of the container\u003e\n\nor to delete all stoped containers run\n\n    $ docker container prune\n\nThe database files are mapped to a docker volume on your local disk so they persist between container restarts.\n\nTo delete the volume and reset all database data run\n\n    $ docker volume rm meetomatic_postgres\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuildit%2Fmeetomatic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuildit%2Fmeetomatic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuildit%2Fmeetomatic/lists"}