https://github.com/iquabius/olimat
Aplicação Web das Olimpíadas de Matemática da UNEMAT
https://github.com/iquabius/olimat
material-ui nextjs nodejs prisma react-apollo reactjs
Last synced: 12 months ago
JSON representation
Aplicação Web das Olimpíadas de Matemática da UNEMAT
- Host: GitHub
- URL: https://github.com/iquabius/olimat
- Owner: iquabius
- License: agpl-3.0
- Created: 2017-04-17T03:10:21.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2025-02-22T21:24:53.000Z (about 1 year ago)
- Last Synced: 2025-02-22T22:23:54.141Z (about 1 year ago)
- Topics: material-ui, nextjs, nodejs, prisma, react-apollo, reactjs
- Language: TypeScript
- Homepage:
- Size: 12.1 MB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 43
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
OliMAT
Uma aplicação web de código aberto para as Olimpíadas de Matemática da [UNEMAT](http://portal.unemat.br).
[](https://circleci.com/gh/iquabius/olimat/tree/master)
[](https://codecov.io/gh/iquabius/olimat/)
[](https://cypress.io)
[](https://www.gnu.org/licenses/agpl-3.0)

[](https://lernajs.io/)
## Desenvolvimento local
### Pré-requisitos
Pra rodar esse projeto, é necessário instalar:
- Node.js versão 10.0
- [Docker](https://docs.docker.com/install/)
- [Docker Compose](https://docs.docker.com/compose/)
### 1. Baixe a aplicação e instale as dependências
Clone o repositório para o seu computador:
```bash
git clone https://github.com/iquabius/olimat.git
```
Instale as dependências do monorepositório:
```bash
cd olimat
npm install
```
Instale as dependências da API e do *frontend*:
```bash
npx lerna bootstrap
```
### 2. Levante o serviço de banco de dados do Prisma
Levante os serviços *prisma* e *postgres* definidos em `api/docker-compose.yml`:
```bash
cd ../api
docker-compose up -d
```
O Prisma agora está conectado ao banco de dados e roda em `http://localhost:4466`.
Ele é utilizado pelo servidor GraphQL para ler e escrever no BD.
Para criar as tabelas no BD, implante a API do Prisma definida em `api/prisma/datamodel.graphql`:
```bash
npx prisma deploy
```
> Note que quando a implantação do serviço do Prisma é feita pela primeira vez, o comando irá executar o script [`api/prisma/seed/seed.ts`](api/prisma/seed/seed.ts) para semear o banco com dados iniciais. Ele sabe desse script porque está listado em [`api/prisma/prisma.yml`](api/prisma/prisma.yml) na propriedade `seed`.
### 3. Inicie o servidor GraphQL
Agora que o serviço de banco de dados do Prisma está disponível, podemos iniciar
o servidor:
```bash
npm run dev
```
O script `dev` inicia o servidor em [`http://localhost:4000/graphql`](http://localhost:4000/graphql). Ele pode ser acessado pelo navegador através do GraphQL Playground, onde é possível explorar as operações disponíveis navegando pela documentação integrada.
### 4. Inicie o *frontend*
Inicia a aplicação em [`http://localhost:3000`](http://localhost:3000):
```bash
cd ../web
npm run dev
```
### 5. Abra o repositório no VS Code
Esse repositório está configurado pra funcionar como um [espaço de trabalho multi-raiz do Visual Studio Code](https://code.visualstudio.com/docs/editor/multi-root-workspaces).
Isso garante o funcionamento correto de algumas integrações, como o a extensão
[Apollo GraphQL](https://marketplace.visualstudio.com/items?itemName=apollographql.vscode-apollo). Há duas formas de abrir esse repositório como um espaço de trabalho:
Se abrir esse projeto como pasta, um aviso aparecerá no canto inferior direito:
> This folder contains a workspace file 'olimat.code-workspace'. Do you want to open it? [Learn more](https://code.visualstudio.com/docs/editor/multi-root-workspaces) about workspace files.
Clique em 'Open Workspace' para abrir o projeto como espaço de trabalho.
Para abrir a espaço de trabalho diretamente, abra o VS Code, clique em `File -> Open Workspace`, navegue até o diretório do projeto e selecione o arquivo `olimat.code-workspace`.
## Gerenciamento do Monorepo com Lerna
Para adicionar ou remover dependências:
1. adicione ou remova manualmente em package.json
2. remova o diretório `node_modules`
3. e execute:
```bash
$ lerna bootstrap --scope @org-name/package-name --no-ci --force-local
```
Fonte: https://github.com/lerna/lerna/issues/1886#issuecomment-531545220
## Licença
[AGPL-3.0](./LICENSE)