9 ms·
A Simplified Jira Clone Built with React/Babel and Node/TypeScript
- luckydata 7y agoThe real issue with jira is how unresponsive the backend feels.
- j45 7y agoFirst, this clone looks very nice and worth trying if your workflow fits it. If this tool is still needing some feature you want, Do you run JIRA cloud? Jira by no means is perfect. It's one of the few tools that can handle complexity. I noticed a huge leap in JIRA speed in switching from cloud hosted Jira to self-hosting. On Cloud, Atlassian is mischievous and aggressively optimizes and constrains the resources. If you don't use Jira often enough on cloud, it will be slow. The more it is used, the faster it gets. One way to speed up JIRA Cloud is to hit the urls regularly with a script, keeps them cached.
- areactnativedev 7y agoMind the "What is this and who is this for" https://github.com/oldboyxx/jira_clone#what-is-this-and-who-is-it-for-%EF%B8%8F https://github.com/oldboyxx/jira_clone#what-is-this-and-who-.... Looks to me like the OP developed this to showcase his skills and get hired, not for production use by other people or with any intent of maintaining it.
- j45 7y agoI'm not one to tell anyone what to run in production or not :)
- thom 7y agoThis may be so, but while I find the web app appalling, the mobile app is perfectly usable, so I am not sure it can all be the back end.
- luckydata 7y agoI suspect it's because the mobile app does a bunch of device-side caching and the web doesn't. Definitely their front end performance is nothing to call home about, I remember filing a ticket about slowness and being replied that 4 seconds to start painting the screen (not done loading) was "excellent performance" according to their metrics.
- runlevel1 7y agoThat's disappointing. I've always had self-hosted Jira and was hoping Jira Cloud would be more performant.
- j45 7y agoI've found ram is JIRA's friend. One nice thing about the jvm is performance issues could be reaonsably tuned. I have paid Jira way too much money for cloud, if I added up the 5-10s I wait for one screen to load at any given time.. It's likely a productivity hit.
- ineedasername 7y agoI used it (Jira) for a short period of time a while back. I seem to recall that it's performance was highly influenced by non-obvious JVM parameters, and bits of the system would stall or crash without a clear pattern until a bit of trial & error with parameters solved it. It wasn't very "turn key" and the out-of-the-box config were... less than ideal. This was for a single user (me) so it's not like there was a much of a resource crunch.
- jakemal 7y agoMost pages take 10+ seconds to load for us and we are using Atlassian's hosting.
- user1980 7y agoOpening up the Network Inspector when loading a single issue in the "new" UI shows a dumpster fire of 128 requests, 5 MB transferred. It's like the paradox of the heap: No one request is abnormally slow (although a 1.1MB slug of unminified JS from jiraplugin.zendesk.com sure isn't helping things) but the whole thing combines to give JIRA a reputation it surely deserves.
- parhamn 7y agoWe have 'macros' in https://www.cloudsynth.com https://www.cloudsynth.com to create issues on the various issue systems (jira/github/etc) and it it is actually pretty impressive how slow JIRA is compared to the rest of them. It's like theres a sleep loop or something.
- headgasket 7y agonice work! license?
- MaulingMonkey 7y agohttps://github.com/oldboyxx/jira_clone/blob/master/package.json#L5 https://github.com/oldboyxx/jira_clone/blob/master/package.j... claims MIT but I don't know how binding that is without an actual license file or explicit mention in anything user-facing.
- a_humean 7y agoWhat motivated you to develop your own query and mutation hooks? Was there something unsatisfying with things like swr and react-query, or were you motivated to demonstrate/learn how to do it yourself?
- nlh 7y agoNot sure if this is your project OP (can’t tell from a quick bio check) but if so, GREAT idea! I love the idea of having an open-source showcase project to help with consulting client development. It’s awesome on multiple levels - shows potential clients how you think / how you work, gives a nice resource to those learning React, etc. etc. Nicely done :)
- nyxtom 7y agoThis is great! Really like the modern react/babel + node implementation - should make for a great reference
- rezz 7y agoReally great, I think something like style-dictionary, or similar token manager could help remove your use of magic numbers in your styles (padding: 13px, margin-top: 7px)
- btbuildem 7y agoJIRA's UX is horrible, why would you want to make a clone of that?
- Scarbutt 7y agoTo get a job.
- DictumMortuum 7y agoDoes/will it support an API?
- sandGorgon 7y agomaybe dont call it jira_clone. People dont like installing something called a "clone". Brand it differently and build something really cool here
- xyst 7y agoI don’t think people like using JIRA in general, especially after companies bloat it with a number of useless plugins that only certain teams will use.
- willio58 7y agoAfter being forced to switch from Jira to a much less capable system, I now wish nobody had complained about Jira. Grass is always greener.
- xyst 7y agoI would much rather not deal with jira tbh. Some companies take it too far and use jira as a micromanagement tool.
- monadic2 7y agoI’ve found jira dysfunction often reflects the dysfunction of the underlying corporate structure.
- jschwartzi 7y agoYeah, any time someone complains about how many FEATURES JIRA has, it's actually an issue with how their company's management team uses JIRA to micromanage the shit out of them and aggressively optimize metrics that don't matter. But that would be an issue with the organization instead of the tool. And those are much harder to fix.
- dnautics 7y ago
- xyst 7y agoPretty cool bro. Not usually a fan of side scrolling when on mobile because it makes dragging and dropping difficult. But on mobile dragging over multiple columns is very smooth. Just don’t allow companies to add an infinite amount of plugins and fields which would likely bring the system to a crawl.
- hknd 7y agomate - this is super cool. Love how you structure your project (very similar to mine).
- ooooak 7y agoit's already way better than Jira.
- pmlnr 7y ago> simplified > React/Babel That's an oxymoron.
- runlevel1 7y agoI believe they meant simplified in the sense that it isn't full-featured.
- oldboyFX 7y agoCreator of "Jira Clone" here. First of all I want to make it clear that this is just a showcase/demo product. It's definitely not something I'm planning to sell. Additionally, it's not even remotely production ready, and it's missing about a zillion features that would make it a full-fledged project management software. The main reason I built this was to have a good showcase for potential future clients. The second reason was to share with the community. More specifically to show how to organize non-trivial React projects and to provide folks with a bunch of React code to learn from. The third reason was to improve my skills and get better at working with hooks, TypeScript, and a couple of other things. Back when I was learning React (4 years ago) I was a bit frustrated by the lack of non-trivial example projects. It was either a bunch of to-do lists, or hugely complex codebases like https://github.com/Automattic/wp-calypso https://github.com/Automattic/wp-calypso. I like to think that this Jira Clone presents a nice middle ground. Bonus: Here's a Trello clone I built while learning React four years ago: https://boxd.ivorreic.com/ https://boxd.ivorreic.com/ :)
- pbreit 7y agoMissing a zillion features might not be terrible.
- brenden2 7y agoFewer features sounds great. I personally loath Jira, and avoid using it whenever possible, but your clone looks really nice. You can improve 100x on Jira just by making it faster, simpler, and easier to use. One suggestion: it looks too similar to Jira, you might want to change the design a bit so that Atlassian doesn't try to sue you or something.
- silicon2401 7y agoWhat do you prefer to Jira? At a former workplace we used Gitlab, which was a pleasant suite to use. These days we use Atlassian and often find myself incredibly frustrated by their products
- bradknowles 7y ago
- grezql 7y agoStarred. Well done, I think this would be a good codebase to learn react.js from
- dboreham 7y agoA bugzilla clone please. Jira is not designed to be used by software devs imho.
- burnJS 7y agoJira is garbage. Its slow, clunky, and its UI doesn't lend itself to a providing users with a small learning curve. I'll take Asana over Jira because it's fast, simple, and has a low learning curve.
- turk73 7y agoHoping for the day that we all just move beyond "JIRA" or "Rally." This shit sucks the life out of me. I'm not a ticket closer, I'm a human fucking being. Build me a tool that eliminates the role of "Scrum Master" because these people are all idiots.
- veeralpatel979 7y agoImpressive! Just curious - how long did it take you to build this?
- mikehacker 7y agoNice work man.
- gshdg 7y agoJust a suggestion after skimming the README: the technologies something was built with are not its features. Features are the things the software can do for the end user.
- mirekrusin 7y agoSeriously are you and many commenters here missing the point? Author says several times this is not a product, it's a showcase of his skills as well as a reference codebase for people wanting to learn how to use ts/react/hooks/whatever in medium-size complexity project. The "features" here are technologies used.
- LrnByTeach 7y agoWell said !!! > The "features" here are technologies used.
- Can_Not 7y agoSome suggestions that may or may not be good * Sentry.io for error tracking * add dark mode. In fact, just let your users choose from any of the generic bootswatch css files. Use a cookie or something to remember which one so it sticks around longer than their user session. If your not using bootstrap 4 usually other popular framework's have something like bootswatch. * use crystal lang instead of typescript or expresses for the server. You'll have a codebase that's faster and safer than typescript. You'll also be able to ship a binary to customers that don't pay the open source price. * trello app for android has a bug where if I turn my screen off, it'll delete any text I've written but not yet saved. Don't do that.
- leowoo91 7y agoJust randomly reading into React over this example, I'm surprised by how React itself confused me with the useState function.
- lxe 7y agouseState is a memoization technique and an abstraction to hide global state. You can do: let _count = 0; function Component() { return ( <div> <div>{_count}</div> <button onClick={() => { _count++; render(); }}>Increase</button> </div> ); } function render() { React.render(<Component />, root) } Or you can abstract it: let _count; function useCount(initialValue) { return [_count, (value) => { _count = value; render(); }] } function Component() { const [count, setCount] = useCount(0); return ( <div> <div>{count}</div> <button onClick={() => setCount(count + 1)}>Increase</button> </div> ); } And then generalize it and make each state dependent on the order of useState calls: const states = []; function useState(initialValue) { const state = states.shift() || { value: initialValue }; // Pop or create setTimeout(() => states.push(state), 0); // Defer the push return [state.value, (value) => { state.value = value; render(); }]; } function Component() { const [count, setCount] = useState(0); const [name, setName] = useState('World'); return ( <div> <div>{count}</div> <button onClick={() => setCount(count + 1)}>Increase</button> <h1>Hello {name}</h1> <input value={name} onChange={(e) => setName(e.currentTarget.value)} /> </div> ); } Actual hooks also track the component that's being rendered, and don't just call the global render function, but that's pretty much the whole useState implementation. Here's a codepen: https://codepen.io/lxe/pen/RwbXPKo https://codepen.io/lxe/pen/RwbXPKo
- scient 7y agoFor a developer who has not done React before - this looks super convoluted for some reason. Global functions with constants defined in another function, that act as ... methods? I'm lost :D
- 7y ago
- codemac 7y agoOne of my pet theories is that if you are building a software engineering product, you should never write your own tools. You can't sell them, and you'll just be learning lessons completely unrelated to your product. However; if you are building a software engineering culture, you should write as many of your own tools as you can get away with. Nothing builds culture like a shared unique experience.
- enra 7y ago(shameless plug): We are building a new issue tracker for software teams. https://linear.app https://linear.app Especially making the UX feel fast, we since the slowness is really annoying in software that you use daily. The app built more like native client, caching the data locally and syncing the transactions the the background. That way it also supports offline use.
- romellem 7y agoI’ve found that keeping separate ‘package.json’ files in a client/ and server/ directory (and thus, having separate node_modules/ directories) leads to some annoying issues down the road. I’ve heard that lerna[0] is maybe one tool that can help avoid this type of setup: does anyone have experience with this or recommend any other ways to organize separate dependency configurations within one mono-repo? [0]: https://github.com/lerna/lerna https://github.com/lerna/lerna
- brod 7y agoIME, using a single package.json is a harmful and naive practice, in abstract it results in a single product version and leads to poor separation between the client(s) and server(s) codebases. It falls apart especially quickly when adding an iOS, TV (JS) or other client (or server) codebase. To resolve the multiple node_module directories you can use tooling like Workspaces[0] (with both npm and yarn) which hoists the node_modules to a "workspace level". I'd be interested in hearing other annoying issues you have with multiple package.json files. [0] https://yarnpkg.com/en/docs/workspaces/ https://yarnpkg.com/en/docs/workspaces/
- nojvek 7y agoGood to see someone working on this. Jira is awful but they have a strong enterprise hold with a bazillion switches. It’s slow as hell and even the simplest things in their UX takes multiple clicks. Like resolving a ticket should be as simple as dragging it to done column but JIRA makes brings an additional popup for resolution type. Annoying UX like that. Definitely a big opportunity to make a dent here. Feedback: don’t use Atlassian JIRA’s screenshot on the main repo page. Have a screenshot of the UI you’ve actually built.
- LrnByTeach 7y agoThis is a great learning project for patterns & Best practices on so many aspects TypeORM, Hooks, React, NO-Redux ... as the Author mentioned already. I am recently using a Next & Nest combination, Combining some of the good patterns of this project with Next&Nest combination would be great. Here is a good Next/NEST starter project https://github.com/saltyshiomix/ark https://github.com/saltyshiomix/ark https://nestjs.com/ https://nestjs.com/ https://nextjs.org/ https://nextjs.org/
- randomchars 7y ago> don’t use Atlassian JIRA’s screenshot on the main repo page. Have a screenshot of the UI you’ve actually built Unless it was changed since your comment: that is the UI, the project literally is a clone.
- cow9 7y agoI suppose this is intentional? https://www.ivorreic.com/ https://www.ivorreic.com/
- nawgszy 7y agoReally minor feedback, but I reacted almost viscerally negatively to the tickets "rotating" when you drag and drop them. Looks super unprofessional. The box-shadow and the basis of the interaction already made me know I was dragging it.
- jupp0r 7y agoLooks great, two suggestions: First, I wouldn't call it JIRA clone, because JIRA is a registered trademark by Atlassian and they might sue you for using it. Second, I wouldn't call it JIRA clone because most people rightfully hate JIRA and at least to me your issue tracker seems to be simple, fast and user-centric, which is exactly what JIRA isn't.
- sourcedToRobots 7y agoThose are some massive git commits.