{"id":13712624,"url":"https://github.com/IsaacAlves7/crud","last_synced_at":"2025-05-06T22:31:20.812Z","repository":{"id":42565493,"uuid":"289166070","full_name":"IsaacAlves7/crud","owner":"IsaacAlves7","description":"📝 It's a repository of C.R.U.D projects.","archived":false,"fork":false,"pushed_at":"2024-05-11T03:09:48.000Z","size":87,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-27T15:52:57.380Z","etag":null,"topics":["crud-app","crud-application","mvc-architecture","odm","oop","orm","rest-api","web-stack"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/IsaacAlves7.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-08-21T03:14:24.000Z","updated_at":"2025-03-05T17:20:20.000Z","dependencies_parsed_at":"2024-05-12T14:30:54.585Z","dependency_job_id":null,"html_url":"https://github.com/IsaacAlves7/crud","commit_stats":null,"previous_names":["isaacalves7/crud"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fcrud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fcrud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fcrud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IsaacAlves7%2Fcrud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IsaacAlves7","download_url":"https://codeload.github.com/IsaacAlves7/crud/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252779043,"owners_count":21802868,"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":["crud-app","crud-application","mvc-architecture","odm","oop","orm","rest-api","web-stack"],"created_at":"2024-08-02T23:01:20.606Z","updated_at":"2025-05-06T22:31:20.090Z","avatar_url":"https://github.com/IsaacAlves7.png","language":"Ruby","funding_links":[],"categories":["Repositories"],"sub_categories":[],"readme":"\u003ca href=\"https://github.com/IsaacAlves7/crud-projects\"\u003e\u003cimg src=\"https://user-images.githubusercontent.com/61624336/159622843-8f7ffa91-e9a5-49f4-8980-69d03dd2c3a7.png\"\u003e\u003c/a\u003e\n\n# 📝 C.R.U.D Projects for different languages\n\u003e It's a repository of simple application projects of \u003cb\u003eCRUD\u003c/b\u003e (Create | Read | Update | Delete) with different architectures and projects.\n\n## Definição de CRUD\n\u003cimg src=\"https://static.platzi.com/media/landing-projects/Proyecto-Python-CRUD.png\" height=\"277\" align=\"right\"\u003e\n\nO **CRUD**, acrônimo para **C**reate, **R**ead, **U**pdate e **D**elete, nada mais é do que uma aplicação de grande ou pequeno porte que consiste em criar, ler, atualizar e deletar alguma informação, seja armazenada num banco de dados ou na própria aplicação através dos **métodos do protocolo HTTP** com seus **status de requisição** e **resposta**. \n\nPortanto, essa é uma aplicação Back-End que pode conter ou não interface gráfica, além de você utilizar ela de forma particular ou integrando em conjunto com outro projeto, tudo isso vai depender da necessidade.\n\n\u003e **Obs**: Então, um Crud é, teoricamente, como se fosse um papel onde podemos: escrever, ler, apagar o que foi escrito ou atualizar aquela anotação. Ele é praticamente um Todo-list, mas pode ser muito mais do que somente um tipo de aplicação web.\n\n## Preparação da aplicação\n\u003cimg src=\"https://user-images.githubusercontent.com/61624336/184163155-980cbb4b-be36-43d1-b6c9-f6ccc20a2c7c.jpg\" align=\"right\" height=\"177\"\u003e\n\nEntão, escolha uma linguagem de programação back-end da sua preferência (PHP, Ruby, Python, Node.js, Java, Go, C++, C# e etc.), mais especificamente com suporte ao paradigma **OOP** - **P**aradigma de **O**rientação a **O**bjetos, e utilize conforme o seu desejo na sua aplicação. Mais precisamente utilizamos o seguinte padrão no desenvolvimento:\n\n- POO (Paradigma de Programação Orientada a Objetos);\n- Arquitetura MVC (Model View Controller);\n- Métodos HTTP;\n- ORM ou ODM;\n- REST API;\n\nColoquei lado a lado com a determinada funcionalidade que essas tecnologias desempenham atuando juntas na criação de um CRUD:\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003eCRUD\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eSQL\u003c/b\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cb\u003eHTTP\u003c/b\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003eC\u003c/b\u003ereate\u003c/td\u003e\n    \u003ctd\u003eINSERT\u003c/td\u003e\n    \u003ctd\u003ePOST\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003eR\u003c/b\u003eead\u003c/td\u003e\n    \u003ctd\u003eSELECT\u003c/td\u003e\n    \u003ctd\u003eGET\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003eU\u003c/b\u003epdate\u003c/td\u003e\n    \u003ctd\u003eUPDATE\u003c/td\u003e\n    \u003ctd\u003ePUT/PATCH\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cb\u003eD\u003c/b\u003eelete\u003c/td\u003e\n    \u003ctd\u003eDELETE/DROP\u003c/td\u003e\n    \u003ctd\u003eDELETE\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003e **Obs**: O mesmo serve para um banco de dados NoSQL que será feito com um tempo de resposta bem mais rápida.\n\nEm relação ao **banco de dados**, você pode escolher algum **modelo de banco** com o tipo de consulta: **SQL** (relacional) ou **No-SQL**, por isso foram feitos algumas **técnicas de programação de mapeamento** para converter dados entre incompatíveis tipos de sistemas em banco de dados e linguagens de programação orientadas a objeto. Isso cria, um efeito de um \"objeto virtual de banco dados\" que pode ser usado de dentro da linguagem de programação, e assim, melhorar o desenvolvimento de consultas no banco de dados:\n\n- **ORM** (Mapeamento objeto-relacional) serve para banco de dados relacionais, com esse tipo de mapeamento podemos\n- **ODM** (Mapeamento objeto-documento) serve para banco de dados NoSQL, com esse tipo de mapeamento podemos\n\n\u003e 🔄 Essa parte será aprofundada melhor na **arquitetura MVC** com o tópico **Model**.\n\n### Web Stacks\nVocê também pode usar uma **Web stack** para padronizar o seu desenvolvimento. Abaixo se encontra algumas web stacks mais utilizadas para fazer esse projeto:\n\n- LAMP (Linux, Apache, MySQL/MariaDB, PHP/Python/Perl)\n- LEMP (Linux, NGINX, MySQL/MariaDB, PHP/Python/Perl)\n- MERN (MongoDB, Express, React.js/React Native, Node.js)\n- MEAN (MongoDB, Express, Angular, Node.js)\n- MENV (MongoDB, Express, Express, Node.js, Vue.js)\n- PERN (PostgreSQL, Express, React.js/React Native, Node.js)\n- FRAmP (Flask)\n- ROR (RubyOnRails)\n\n\u003e 🔠 Cada stack possui uma linguagem de programação, porém você pode inserir bibliotecas e frameworks dessa linguagem, isso tudo pode ser muito bem customizável, dependendo do seu projeto e da etapa de desenvolvimento do software.\n\n### Arquitetura usada\nTodas essas _web stacks_ obedecem a arquitetura padrão para aplicações web chamada **MVC**, acrônimo para **M**odel **V**iew **C**ontroller, onde o **Model** fica no back-end para acessar, controlar e colocar algum dado no banco de dados, **View** é onde se localiza todo o seu front-end e o **Controller** é onde se localiza as **APIs**, o **Router** onde fica a ação de rotas da aplicação e o **Controller** que é onde ficar a ação da aplicação em devolver alguma requisição ou resposta para ser renderizada no lado do cliente, ou seja ele funciona como um \"intermediário\" entre o _View_ e o _Model_.\n\n\u003e 🚮 Essa é uma arquitetura totalmente voltada para aplicações web, porém existem outras como que valem a pena serem estudadas.\n\n### API\nAlém disso a integração com o lado do cliente e o lado do servidor é feito com uma API chamada **REST API**, necessária para atender as requisições e respostas enviadas pelos métodos do protocolo HTTP entre os dois lados. Para isso você deve configurar suas atividades do protocolo HTTP em ambos os lados da sua aplicação, para tanto o navegador quanto o servidor interpretar essa troca de mensagens entre si.\n\n\u003c!-- \n# 📜 JavaScript (Node.js) Language Programming\n\u003cimg src=\"https://www.webdesignemfoco.com/img/files/original/368570-crud-nodejs-l.jpg\"\u003e\n\n# 🐍 Python Language Programming\n\u003cimg src=\"https://www.webdesignemfoco.com/img/files/original/194176-banner-curso-de-python-l.jpg\"\u003e\n --\u003e\n \n## Autor\n| [\u003cimg src=\"https://avatars.githubusercontent.com/u/61624336?v=4\" width=\"110\"\u003e\u003cbr\u003e\u003csub\u003e@IsaacAlves7\u003c/sub\u003e](https://github.com/IsaacAlves7) |\n| :---: |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIsaacAlves7%2Fcrud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIsaacAlves7%2Fcrud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIsaacAlves7%2Fcrud/lists"}