MCPcopy Index your code
hub / github.com/oldboyxx/jira_clone

github.com/oldboyxx/jira_clone @main sqlite

repository ↗ · DeepWiki ↗
255 symbols 869 edges 183 files 0 documented · 0%
README

A simplified Jira clone built with React and Node

Auto formatted with Prettier, tested with Cypress 🎗

Visit the live app | View client | View API

Tech logos

App screenshot

What is this and who is it for 🤷‍♀️

I 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.

There 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.

Features

  • Proven, scalable, and easy to understand project structure
  • Written in modern React, only functional components with hooks
  • A variety of custom light-weight UI components such as datepicker, modal, various form elements etc
  • Simple local React state management, without redux, mobx, or similar
  • Custom webpack setup, without create-react-app or similar
  • Client written in Babel powered JavaScript
  • API written in TypeScript and using TypeORM

Setting up development environment 🛠

  • Install postgreSQL if you don't have it already and create a database named jira_development.
  • git clone https://github.com/oldboyxx/jira_clone.git
  • Create an empty .env file in /api, copy /api/.env.example contents into it, and fill in your database username and password.
  • npm run install-dependencies
  • cd api && npm start
  • cd client && npm start in another terminal tab
  • App should now be running on http://localhost:8080/

Running cypress end-to-end tests 🚥

  • Set up development environment
  • Create a database named jira_test and start the api with cd api && npm run start:test
  • cd client && npm run test:cypress

What's missing?

There are features missing from this showcase product which should exist in a real product:

Migrations 🗄

We'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.

Proper authentication system 🔐

We 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.

Accessibility ♿

Not all components have properly defined aria attributes, 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.

Unit/Integration tests 🧪

Both Client and API are currently tested through end-to-end Cypress tests. 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.

Contributing

I will not be accepting PR's on this repository. Feel free to fork and maintain your own version.

License

MIT


Visit the live app | View client | View API

Extension points exported contracts — how you extend this code

ProcessEnv (Interface)
(no doc)
api/src/types/env.d.ts
Response (Interface)
(no doc)
api/src/types/express.d.ts
Request (Interface)
(no doc)
api/src/types/express.d.ts

Core symbols most depended-on inside this repo

testid
called by 40
client/cypress/support/utils.js
createEntity
called by 29
api/src/utils/typeorm.ts
catchErrors
called by 15
api/src/errors/asyncCatch.ts
updateIssue
called by 9
client/src/Project/Board/IssueDetails/index.jsx
renderLinkItem
called by 7
client/src/Project/Sidebar/index.jsx
api
called by 6
client/src/shared/utils/api.js
generateField
called by 5
client/src/shared/components/Form/Field.jsx
getStoredAuthToken
called by 5
client/src/shared/utils/authToken.js

Shape

Function 225
Class 18
Method 5
Enum 4
Interface 3

Languages

TypeScript100%

Modules by API surface

api/src/errors/customErrors.ts15 symbols
client/src/shared/components/Select/Dropdown.jsx13 symbols
client/src/shared/components/Select/index.jsx9 symbols
client/src/shared/components/DatePicker/DateSection.jsx9 symbols
client/src/Project/Board/Lists/index.jsx6 symbols
client/src/shared/components/Tooltip/index.jsx5 symbols
client/src/shared/components/DatePicker/TimeSection.jsx5 symbols
client/src/Project/IssueCreate/index.jsx5 symbols
client/cypress/integration/issueFilters.spec.js5 symbols
api/src/utils/typeorm.ts5 symbols
api/src/database/createTestAccount.ts5 symbols
api/src/database/createGuestAccount.ts5 symbols

Dependencies from manifests, versioned

@4tw/cypress-drag-drop1.3.0 · 1×
@babel/core7.7.4 · 1×
@babel/plugin-proposal-class-properties7.7.4 · 1×
@babel/plugin-proposal-decorators7.7.4 · 1×
@babel/plugin-proposal-export-namespace-from7.7.4 · 1×
@babel/plugin-syntax-dynamic-import7.7.4 · 1×
@babel/preset-env7.7.4 · 1×
@babel/preset-react7.7.4 · 1×
@cypress/webpack-preprocessor4.1.1 · 1×
@types/cors2.8.6 · 1×
@types/express4.17.2 · 1×
@types/faker4.1.7 · 1×

For agents

$ claude mcp add jira_clone \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact