Compare commits
11 Commits
87888916a7
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa2c1f18f2 | ||
|
|
0d6b748a97 | ||
|
|
8dfcd680a4 | ||
|
|
6221969d60 | ||
|
|
17a14fb54b | ||
|
|
c7b01c6ad3 | ||
|
|
cb7710378d | ||
|
|
190dfcd9dc | ||
|
|
9ec69d7149 | ||
|
|
40a15d126f | ||
|
|
daf334f73b |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -10,3 +10,6 @@
|
|||||||
# production
|
# production
|
||||||
**/build
|
**/build
|
||||||
**/npm-debug.log*
|
**/npm-debug.log*
|
||||||
|
|
||||||
|
# Persistence Directory for Docker
|
||||||
|
**/persist
|
||||||
|
|||||||
0
CONTRIBUTING.md
Normal file
0
CONTRIBUTING.md
Normal file
7
Dockerfile
Normal file
7
Dockerfile
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
FROM node:lts-alpine
|
||||||
|
RUN adduser jira-clone --gecos GECOS --shell /bin/bash --disabled-password --home /app
|
||||||
|
COPY . /app
|
||||||
|
WORKDIR /app
|
||||||
|
RUN npm run install-dependencies && \
|
||||||
|
cp -v /app/docker/entrypoint.sh /usr/bin/entrypoint
|
||||||
|
ENTRYPOINT ["entrypoint"]
|
||||||
48
README.md
48
README.md
@@ -1,22 +1,25 @@
|
|||||||
<h1 align="center">A simplified Jira clone built with React and Node</h1>
|
# :large_blue_diamond: FauxJira - A simplified Jira clone built with React and Node
|
||||||
|
|
||||||
<div align="center">Auto formatted with Prettier, tested with Cypress 🎗</div>
|
This is a maintained fork of [the demonstrative project by Ivor Reic](https://github.com/oldboyxx/jira_clone) that strives to be a full alternative to Jira or other project management tools. Currently it's working for demonstration purposes, but is missing authentication and more.
|
||||||
|
|
||||||
<h3 align="center">
|
**As opposed to the original project, we *do* accept Pull Requests and would be glad to receive lots of them!**
|
||||||
<a href="https://jira.ivorreic.com/">Visit the live app</a> |
|
|
||||||
<a href="https://github.com/oldboyxx/jira_clone/tree/master/client">View client</a> |
|
<h3>
|
||||||
<a href="https://github.com/oldboyxx/jira_clone/tree/master/api">View API</a>
|
<!--<a href="https://jira.ivorreic.com/">Visit the live app</a> |-->
|
||||||
|
:memo: <a href="https://github.com/FauxJira/FauxJira/tree/master/client">Client</a> •
|
||||||
|
<a href="https://github.com/FauxJira/FauxJira/tree/master/api">Server/API</a><br>
|
||||||
|
:speech_balloon: <a href="https://rocket.fauxjira.xyz">Discussion on Rocket.Chat</a>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## What is this and who is it for 🤷♀️
|
## 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.
|
This originated in a showcase product by Ivor Reic. 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.
|
We want to build upon it in this fork and create a real, usable application for project management.
|
||||||
|
|
||||||
|
> 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
|
## Features
|
||||||
|
|
||||||
@@ -31,7 +34,7 @@ There are many showcase/example React projects out there but most of them are wa
|
|||||||
## Setting up development environment 🛠
|
## Setting up development environment 🛠
|
||||||
|
|
||||||
- Install [postgreSQL](https://www.postgresql.org/) if you don't have it already and create a database named `jira_development`.
|
- Install [postgreSQL](https://www.postgresql.org/) if you don't have it already and create a database named `jira_development`.
|
||||||
- `git clone https://github.com/oldboyxx/jira_clone.git`
|
- `git clone https://github.com/FauxJira/FauxJira.git`
|
||||||
- Create an empty `.env` file in `/api`, copy `/api/.env.example` contents into it, and fill in your database username and password.
|
- 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`
|
- `npm run install-dependencies`
|
||||||
- `cd api && npm start`
|
- `cd api && npm start`
|
||||||
@@ -46,7 +49,7 @@ There are many showcase/example React projects out there but most of them are wa
|
|||||||
|
|
||||||
## What's missing?
|
## What's missing?
|
||||||
|
|
||||||
There are features missing from this showcase product which should exist in a real product:
|
There are features missing at the current state which we're working on:
|
||||||
|
|
||||||
### Migrations 🗄
|
### Migrations 🗄
|
||||||
|
|
||||||
@@ -62,21 +65,8 @@ Not all components have properly defined [aria attributes](https://developer.moz
|
|||||||
|
|
||||||
### Unit/Integration tests 🧪
|
### Unit/Integration tests 🧪
|
||||||
|
|
||||||
Both 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.
|
Both Client and API are currently tested through [end-to-end Cypress tests](https://github.com/FauxJira/FauxJira/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.
|
||||||
|
|
||||||
### Author: Ivor Reic ✍️
|
## Contributors
|
||||||
|
- [Ivor Reic](https://getivor.com/): Original Author
|
||||||
- Website: https://getivor.com/
|
- [Leopere](https://github.com/Leopere): Creator of this Fork
|
||||||
- Skype handle: ivor.reic 💬
|
|
||||||
|
|
||||||
### License
|
|
||||||
|
|
||||||
[MIT](https://opensource.org/licenses/MIT)
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<h4>
|
|
||||||
<a href="https://jira.ivorreic.com/">Visit the live app</a> |
|
|
||||||
<a href="https://github.com/oldboyxx/jira_clone/tree/master/client">View client</a> |
|
|
||||||
<a href="https://github.com/oldboyxx/jira_clone/tree/master/api">View API</a>
|
|
||||||
</h4>
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
"pg": "^7.14.0",
|
"pg": "^7.14.0",
|
||||||
"reflect-metadata": "^0.1.13",
|
"reflect-metadata": "^0.1.13",
|
||||||
"striptags": "^3.1.1",
|
"striptags": "^3.1.1",
|
||||||
"typeorm": "^0.2.20"
|
"typeorm": "^0.2.21"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/cors": "^2.8.6",
|
"@types/cors": "^2.8.6",
|
||||||
|
|||||||
@@ -10,7 +10,8 @@ const Authenticate = () => {
|
|||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const createGuestAccount = async () => {
|
if (!getStoredAuthToken()) {
|
||||||
|
const createGuestAccount = async () => {
|
||||||
try {
|
try {
|
||||||
const { authToken } = await api.post('/authentication/guest');
|
const { authToken } = await api.post('/authentication/guest');
|
||||||
storeAuthToken(authToken);
|
storeAuthToken(authToken);
|
||||||
@@ -19,8 +20,6 @@ const Authenticate = () => {
|
|||||||
toast.error(error);
|
toast.error(error);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!getStoredAuthToken()) {
|
|
||||||
createGuestAccount();
|
createGuestAccount();
|
||||||
}
|
}
|
||||||
}, [history]);
|
}, [history]);
|
||||||
|
|||||||
57
docker-compose.yml
Normal file
57
docker-compose.yml
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
version: "3.4"
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: postgres:9.6-alpine
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=jira-clone
|
||||||
|
- POSTGRES_PASSWORD=jira-clone
|
||||||
|
- POSTGRES_DB=jira-clone
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
volumes:
|
||||||
|
- ./persist/db/git:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
api:
|
||||||
|
build: .
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- NODE_ENV=development
|
||||||
|
- DB_HOST=db
|
||||||
|
- DB_PORT=5432
|
||||||
|
- DB_USERNAME=jira-clone
|
||||||
|
- DB_PASSWORD=jira-clone
|
||||||
|
- DB_DATABASE=jira-clone
|
||||||
|
## Please change this string to something unique.
|
||||||
|
- JWT_SECRET=development12345
|
||||||
|
command: ["api"]
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
|
||||||
|
client:
|
||||||
|
build: .
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
ports:
|
||||||
|
- 8080:8080
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
environment:
|
||||||
|
- RUN_MODE=api
|
||||||
|
- NODE_ENV=development
|
||||||
|
- DB_HOST=localhost
|
||||||
|
- DB_PORT=5432
|
||||||
|
- DB_USERNAME=jira-clone
|
||||||
|
- DB_PASSWORD=jira-clone
|
||||||
|
- DB_DATABASE=jira-clone
|
||||||
|
## Please change this string to something unique.
|
||||||
|
- JWT_SECRET=development12345
|
||||||
|
depends_on:
|
||||||
|
- api
|
||||||
|
command: ["client"]
|
||||||
|
|
||||||
|
networks:
|
||||||
|
default:
|
||||||
13
docker/entrypoint.sh
Executable file
13
docker/entrypoint.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
case $1 in
|
||||||
|
api )
|
||||||
|
cd /app/api/ && npm start
|
||||||
|
;;
|
||||||
|
client )
|
||||||
|
cd /app/client && npm start
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo "The only two supported run modes are client and api, giving you a shell instead."
|
||||||
|
/bin/sh
|
||||||
|
;;
|
||||||
|
esac
|
||||||
Reference in New Issue
Block a user