- General information & features
- Built With
- Requirements
- Setup & usage
- Tests
- Screenshots
- Motivation & Project Status
Noticeboard is an advertising service, where you can:
- register (with account activation via e-mail) and login;
- create, read, update and delete a single notice;
- read, filter, search and sort pages of notices;
- change your password, profile image and delete your account;
- visit your and other users profile pages.
The project consists of a RESTful web service with Spring Boot & (responsive) single page application with React.
Noticeboard is a full-stack project, so it uses a number of technologies & tools to work properly:
-
Database:
PostgreSQL 13.2
- a free and open-source relational database management system;Docker 19.03.13
- an open platform for developing, shipping, and running applications;DBeaver Community 21.1.0
- a free multi-platform database tool for developers & database administrators.
-
Back-end:
Java 11
- a high-level, class-based, object-oriented programming language;Spring Boot 2.4.4
- an application framework and inversion of control container for the Java platform;IntelliJ IDEA Ultimate 2021.1.2
- an integrated development environment (Java IDE) for developing computer software;Apache Maven 3.6.3
- a build automation tool used primarily for Java projects;Postman 7.36.5
- a collaboration platform for API development.
-
Front-end:
JavaScript ES6
- a lightweight, interpreted, or just-in-time compiled programming language;ReactJS 17.0.2
- a JavaScript library for building user interfaces;Redux 4.0.5
- a predictable state container for JavaScript apps;Bootstrap 5.0.0
- a free and open-source CSS framework directed at responsive, mobile-first front-end web development;HTML5
- a standard markup language for documents designed to be displayed in a web browser;CSS3
- a style sheet language used for describing the presentation of a document written in a markup language;Npm 7.11.2
- a package manager for the JavaScript programming language;Webstorm 2021.1.2
- an integrated development environment (JavaScript IDE) for developing computer software.
To run the application locally you need:
Docker 19.03.13
;Docker-compose 1.25.0
;Java 11
;Apache Maven 3.6.3
;Npm 7.11.2
;Node 10.19.0
.
The project uses the latest version of React. You can refer to the React documentation for more information about supported browsers.
To use the production app click here.
To run it locally (dev profile) follow the instructions:
-
Clone this repo to your desktop:
git clone git@github.com:wysockif/noticeboard.git
-
Database:
Change your directory to
noticeboard/database
and type:docker-compose up database
to set up a database server on port 5555.
-
Back-end:
Change your directory to
noticeboard/back-end
and run:mvn clean install
to build a JAR file and:
java -Djasypt.encryptor.password=secretKey -jar noticeboard-0.0.1-SNAPSHOT.jar
to run it on port 8080.
As a 'secretKey' you need to provide the key that enable decrypting the passwords in application.yml.
-
Front-end:
Change your directory to
noticeboard/front-end
and run:npm install
to install all the dependencies and:
npm start
to run the application on port 3000.
The tests were created mostly in TDD by following the F.I.R.S.T. principles.
-
Back-end (JUnit 4, AssertJ):
Change your directory to
noticeboard/back-end
and type:mvn test
to run all (187) tests.
-
Front-end (testing-library, Jest):
Change your directory to
noticeboard/front-end
and type:npm test
to run all (82) tests.
- Home page:
- Register page:
- Login page:
- Adding notice page:
- Notice page:
- User profile page:
- Edit user page: