Assembler is a tool for automating division of students into project groups. It goes by the nickname "prkl" which is shorthand for Projektiryhmäytymistyökalu. More comprehensive description here.
Branch | CI Status |
---|---|
master |
|
trunk |
Basic documentation is listed here. If you are member of development group in Ohjelmistotuotantoprojekti-course, you might be interested in more "beginner-friendly" explanation in wiki (in Finnish).
A descriptive graph of the frontend structure can be found here
A similar graph for the backend structure can be found here
A little Getting started
-guide can be found here
Docker-compose is used the run the app in development mode on your computer. First make sure docker and docker-compose are installed on your computer. Then the development environment can be started using
docker-compose up
This starts the client, graphQl server, database and adminer service in their own containers. Use docker ps
to list all running containers and docker-compose down
to stop them.
A graphQl endpoint can be found at http://localhost:3001/grapgql.
The server restarts automatically after changes to the source code. The server also contains a production version of the client but it's not hot-loadable so it is more convenient to use the hot-loadable development front end at http://localhost:3000.
The local Postgres database starts in it's own container and it can easily be accessed using Adminer at http://localhost:3003 (System: PostgreSQL, Server: db, Username: postgres, Password: postgres, Database: postgres).
Note to Windows users: Hot loading changes in the front end and back end may not work as intended on a Windows machine while using docker-compose. One solution is to run the project on WSL (Windows Subsystem for Linux). Another way is to use docker-compose only to start the database and adminer (docker-compose up adminer db
) while starting the client and server manually. In this case start the client in the client folder with npm start
and the server in the server folder with npm run start:dev
.
Another possible solution is to use Docker Desktop. Make sure the program is running before using docker-compose up
, shut down prkl_frontend_1 and start the client with npm start dev
The node_modules folders in both the frontend and backend are shared between the Docker container and development computer using Docker volumes. To ensure a consistent development environment it is adviced to install dependencies from inside the container and then mirror them to the outside. The reason is, that things like the npm version or the operating system can affect what actual node_modules are installed. Installing dependencies from inside the container can be achieved using the following steps:
npm install
on your development computer like you normally would.docker-compose up --build
When the container starts up, it checks if a node_modules folder is present. If it's missing it installs the modules. After the install, the new node_modules folder will appear on the development computer as well.
If someone else has installed new dependencies (for example you see changes in package.json or package.lock.json after pulling a new version): Delete the node_modules folder and have the new dependencies installed automatically by using docker-compose up --build
.
Cypress is used for end-to-end tests. It is recommended to have Cypress installed globally (npm i -g cypress
). To use cypress, first launch Assembler in development mode as outlined above. Then do:
cd e2e
npm install
npm run test:dev
To run all tests in headless mode like they are run in CI
docker-compose -f docker-compose.ci.yml run tests
The development app needs to be close for this in order to avoid port conflicts. Also if docker-compose runs as root you may need sudo chown -R $USER:$USER pg_data
.
The server has unit tests written with Jest. You can run them with
cd server
npm run start:test`
The product backlog can be found here.
Previous teams have composed these lists of unfinished tasks and known issues.
See the separate metrics document for metrics and charts.