{"id":13403215,"url":"https://github.com/oldboyxx/jira_clone","last_synced_at":"2025-05-14T01:07:01.071Z","repository":{"id":37607884,"uuid":"225252643","full_name":"oldboyxx/jira_clone","owner":"oldboyxx","description":"A simplified Jira clone built with React/Babel (Client), and Node/TypeScript (API). Auto formatted with Prettier, tested with Cypress.","archived":false,"fork":false,"pushed_at":"2024-06-20T03:45:15.000Z","size":1973,"stargazers_count":10845,"open_issues_count":9,"forks_count":2103,"subscribers_count":168,"default_branch":"master","last_synced_at":"2025-04-02T01:09:58.883Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://jira.ivorreic.com","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oldboyxx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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":"2019-12-02T00:29:39.000Z","updated_at":"2025-04-01T12:06:41.000Z","dependencies_parsed_at":"2024-10-14T15:20:59.159Z","dependency_job_id":"8c58dbad-b69b-403d-99e5-a55abc2f9cf2","html_url":"https://github.com/oldboyxx/jira_clone","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/oldboyxx%2Fjira_clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oldboyxx%2Fjira_clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oldboyxx%2Fjira_clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oldboyxx%2Fjira_clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oldboyxx","download_url":"https://codeload.github.com/oldboyxx/jira_clone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247962462,"owners_count":21024864,"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":[],"created_at":"2024-07-30T19:01:26.918Z","updated_at":"2025-04-09T02:11:23.879Z","avatar_url":"https://github.com/oldboyxx.png","language":"JavaScript","funding_links":[],"categories":["JavaScript","Good Repos to structure","Table of Contents","HarmonyOS","Tools","📦 Legacy \u0026 Inactive Projects","**Awesome Codebases** [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)"],"sub_categories":["Windows Manager","WebTools"],"readme":"\u003ch1 align=\"center\"\u003eA simplified Jira clone built with React and Node\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003eAuto formatted with Prettier, tested with Cypress 🎗\u003c/div\u003e\n\n\u003ch3 align=\"center\"\u003e\n  \u003ca href=\"https://jira.ivorreic.com/\"\u003eVisit the live app\u003c/a\u003e |\n  \u003ca href=\"https://github.com/oldboyxx/jira_clone/tree/master/client\"\u003eView client\u003c/a\u003e |\n  \u003ca href=\"https://github.com/oldboyxx/jira_clone/tree/master/api\"\u003eView API\u003c/a\u003e\n\u003c/h3\u003e\n\n![Tech logos](https://i.ibb.co/DVFj8PL/tech-icons.jpg)\n\n![App screenshot](https://i.ibb.co/W3qVvCn/jira-optimized.jpg)\n\n## What is this and who is it for 🤷‍♀️\n\nI do React consulting and this is a showcase product I've built in my spare time. It's a very good example of modern, real-world React codebase.\n\nThere are many showcase/example React projects out there but most of them are way too simple. I like to think that this codebase contains enough complexity to offer valuable insights to React developers of all skill levels while still being _relatively_ easy to understand.\n\n## Features\n\n- Proven, scalable, and easy to understand project structure\n- Written in modern React, only functional components with hooks\n- A variety of custom light-weight UI components such as datepicker, modal, various form elements etc\n- Simple local React state management, without redux, mobx, or similar\n- Custom webpack setup, without create-react-app or similar\n- Client written in Babel powered JavaScript\n- API written in TypeScript and using TypeORM\n\n## Setting up development environment 🛠\n\n- Install [postgreSQL](https://www.postgresql.org/) if you don't have it already and create a database named `jira_development`.\n- `git clone https://github.com/oldboyxx/jira_clone.git`\n- Create an empty `.env` file in `/api`, copy `/api/.env.example` contents into it, and fill in your database username and password.\n- `npm run install-dependencies`\n- `cd api \u0026\u0026 npm start`\n- `cd client \u0026\u0026 npm start` in another terminal tab\n- App should now be running on `http://localhost:8080/`\n\n## Running cypress end-to-end tests 🚥\n\n- Set up development environment\n- Create a database named `jira_test` and start the api with `cd api \u0026\u0026 npm run start:test`\n- `cd client \u0026\u0026 npm run test:cypress`\n\n## What's missing?\n\nThere are features missing from this showcase product which should exist in a real product:\n\n### Migrations 🗄\n\nWe're currently using TypeORM's `synchronize` feature which auto creates the database schema on every application launch. It's fine to do this in a showcase product or during early development while the product is not used by anyone, but before going live with a real product, we should [introduce migrations](https://github.com/typeorm/typeorm/blob/master/docs/migrations.md).\n\n### Proper authentication system 🔐\n\nWe currently auto create an auth token and seed a project with issues and users for anyone who visits the API without valid credentials. In a real product we'd want to implement a proper [email and password authentication system](https://www.google.com/search?q=email+and+password+authentication+node+js\u0026oq=email+and+password+authentication+node+js).\n\n### Accessibility ♿\n\nNot all components have properly defined [aria attributes](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA), visual focus indicators etc. Most early stage companies tend to ignore this aspect of their product but in many cases they shouldn't, especially once their userbase starts growing.\n\n### Unit/Integration tests 🧪\n\nBoth Client and API are currently tested through [end-to-end Cypress tests](https://github.com/oldboyxx/jira_clone/tree/master/client/cypress/integration). That's good enough for a relatively simple application such as this, even if it was a real product. However, as the app grows in complexity, it might be wise to start writing additional unit/integration tests.\n\n## Contributing\n\nI will not be accepting PR's on this repository. Feel free to fork and maintain your own version.\n\n## License\n\n[MIT](https://opensource.org/licenses/MIT)\n\n\u003chr\u003e\n\n\u003ch3\u003e\n  \u003ca href=\"https://jira.ivorreic.com/\"\u003eVisit the live app\u003c/a\u003e |\n  \u003ca href=\"https://github.com/oldboyxx/jira_clone/tree/master/client\"\u003eView client\u003c/a\u003e |\n  \u003ca href=\"https://github.com/oldboyxx/jira_clone/tree/master/api\"\u003eView API\u003c/a\u003e\n\u003c/h3\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foldboyxx%2Fjira_clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foldboyxx%2Fjira_clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foldboyxx%2Fjira_clone/lists"}