Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
W
WIE_202021_CSBillero11
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Bernard Roland (Student Com20)
WIE_202021_CSBillero11
Commits
57cd0c55
Commit
57cd0c55
authored
3 years ago
by
Bernard Roland (Student Com20)
Browse files
Options
Downloads
Patches
Plain Diff
Wrote the technology and development process documentation
parent
f9e657eb
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
README.md
+0
-9
0 additions, 9 deletions
README.md
docs/technology.md
+84
-0
84 additions, 0 deletions
docs/technology.md
with
84 additions
and
9 deletions
README.md
+
0
−
9
View file @
57cd0c55
...
...
@@ -85,12 +85,3 @@ After starting the development server inside `client`, the website is accessible
`http://localhost:3000`
. Depending on your configuration the site will probably be opened
automatically in your default browser after execution of
`yarn start`
.
## Implementation
<!-- TODO -->
### General
<!-- TODO -->
### Libraries
<!-- TODO -->
This diff is collapsed.
Click to expand it.
docs/technology.md
+
84
−
0
View file @
57cd0c55
# Technologies, Architecture & Development Process
## Architecture & Technology
The application is divided into a front-end (
`client`
folder) and back-end (
`server`
folder). Both
are running on
[
JavaScript
](
javascript
)
runtimes and are written in
[
TypeScript
](
typescript
)
. The
communication between the server and client is implement using a
[
REST API
](
rest
)
.
### Server
The server runs on the
[
Node.js
](
node
)
environment. The code is rune using
[
node-ts
](
nodets
)
when
testing, and compiled using the
[
TypeScript
](
typescript
)
compiler before running it with regular
[
node
](
node
)
for production.
The API is implement on the server using the
[
express
](
express
)
web framework. The server also
serves the static resources for the front-end. The back-end handles requests using a database
connection handled by the
[
Knex.js
](
knex
)
query builder. For testing a
[
SQLite3
](
sqlite
)
database is
used, while for production and staging the server connects to a
[
PostgreSQL
](
postgres
)
database.
Authentication is handled using
[
JSON Web Tokens
](
jwt
)
(
JWT
)
that are signed either using a secret
(in testing) or using a public and private key pair (in production). The authentication token must
be given for all request that require authentication. Password are salted and hashed using the
[
bcrypt
](
bcrypt
)
algorithm and later verified against the provided credentials for generating new
tokens.
The implementation of the API is split into multiple parts. The parts all have unit test in the
server code, that are run using the
[
Jest
](
jest
)
testing framework and the
[
supertest
](
supertest
)
library for testing the API. Documentation for each part can be found in the
[
API
Documentation
](
api
)
.
### Client
The front-end is running in the browser and implemented as a
[
Single Page Application
](
spa
)
. Like
the server, it is written in
[
TypeScript
](
typescript
)
and transpiled before running in the browser.
For production builds, the application is bundled and minified using
[
Webpack
](
webpack
)
. We are also
using the
[
Workbox
](
workbox
)
library to simplify the implementation of the service worker and make
the website a
[
Progressive Web App
](
pwa
)
(
PWA
)
.
The client uses the
[
React
](
react
)
framework together with the
[
React router
](
reactrouter
)
library.
[
React
](
react
)
is a
[
JavaScript
](
javascript
)
library for rendering user interfaces. It uses a
component structure, where the programmer defines custom components that can be nested and will then
be rendered by the library into the browsers DOM. We implemented only functional components, and
used
[
TSX
](
tsx
)
to allow easier input of the
[
React
](
react
)
nodes.
We also use
[
SCSS
](
sass
)
for styling the pages and custom components we implemented. It is
transpiled, similar to
[
TypeScript
](
typescript
)
, before running the code in the browser. The
resulting
[
CSS
](
css
)
will also be bundled using
[
Webpack
](
webpack
)
.
[
javascript
]:
https://developer.mozilla.org/en-US/docs/Web/javascript
[
typescript
]:
https://www.typescriptlang.org/
[
rest
]:
https://developer.mozilla.org/en-US/docs/Glossary/REST
[
node
]:
https://nodejs.org/en/
[
nodets
]:
https://typestrong.org/ts-node/
[
express
]:
http://expressjs.com/
[
knex
]:
http://knexjs.org/
[
sqlite
]:
https://sqlite.org/index.html
[
postgres
]:
https://www.postgresql.org/
[
jwt
]:
https://jwt.io/
[
bcrypt
]:
https://github.com/kelektiv/node.bcrypt.js#readme
[
jest
]:
https://jestjs.io/
[
supertest
]:
https://github.com/visionmedia/supertest#readme
[
api
]:
api-docs.md
[
spa
]:
https://developer.mozilla.org/en-US/docs/Glossary/SPA
[
webpack
]:
https://webpack.js.org/
[
workbox
]:
https://developers.google.com/web/tools/workbox/
[
pwa
]:
https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps
[
react
]:
https://reactjs.org/
[
reactrouter
]:
https://reactrouter.com/
[
tsx
]:
https://www.typescriptlang.org/docs/handbook/jsx.html
[
sass
]:
https://sass-lang.com/
[
css
]:
https://developer.mozilla.org/en-US/docs/Web/CSS
## Development Process
We started development by thinking about the user story and crating simple wireframes. After we had
an idea of what the application was supposed to do, we started to design the database structure.
With the database schema finished and after selecting the technologies, we started work first on the
backend. At the same time, we also started work on the front-end, initially working on the parts
that did not need the API. After we completed the functionality of the server code, we focused our
attention on design and implementation of the client side code. From then on, changes to the
back-end where small and mainly to fix bugs that were found during the implementation of the
front-end. We focused the last part of development on finding and fixing bugs, adding only a small
amount of new features in the last month.
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment