- Описание
- Локальный запуск
- База данных
- Покрытие тестами
- Навигация по проекту
- Используемые технологии
- Контанктные данные
Это дипломный проект образовательной платформы Skillbox, курса Java-разработчик.
Данный проект представляет собой обычный блог, который базируется на технологии SpringBoot. (список исп. технологий см. тут)
На данном блоге можно:
- Смотреть чужие посты;
- Регистрироваться;
- Редактировать свой профиль;
- Есть возможность загрузить свою фотографию (она будет автоматически обрезана). Допустимые форматы фотографии jpg\jpeg и png. При попытке загрузить другие форматы вы увидите ошибку. Также можно меняит имя, пароль и email.
- Писать свой пост. Важно: после публикации пост должен утвердить или отклонить модератор сайта;
- Редактировать свои посты;
- после редактирования на посту автоматически появится галочка "Скрытая публикация". Уберите её, если хотите, чтобы другие пользователи увидели ваш текст.
- Писать комментарии и отвечать на них;
- также есть возможность помима текста добавить любую фотографию или картинку на ваш выбор (помним про формат файла).
- Ставить оценки публикациям; (лайки или дизлайки)
- Смотреть статистику; (если она открыта)
- Смотреть статистику можно как свою, так и общую по всему блогу.
- Искать публикации: по слову, по тэгу, по дате публикации;
Несколько медиафайлов для демонстрации:
Для того, чтобы запустить проект локально вам необходимы JDK 11, система контроля версий git, сборщик проектов maven. Клонировать проект можно через git bash:
git clone https://github.com/VlasovM/JaVlasovBlog.git
Далее вам нужно изменить такие параметры, как пароль и логин к подключению базы данных, пароль и email для безопасности google для отправления писем. Эти переменные лежат в файле application.properties.
Изменить эти параметры можно тремя способами:
- Просто менять ссылку переменной окружения на своё значение;
- При запуске jar файла запустить его с параметрами;
Для первого варианта вам нужно настроить следующие переменные окружения:
- SESSION EMAIL
- SESSION PASSWORD
- DB_USERNAME
- DB_PASSWORD
Далее независимо какой способ изменения вы выбрали, следует выполнить команду:
mvn clean install
Если вы поменяли переменные окружения самостоятельно, то запустить проект можно следующим образом:
java -jar javlasovblog-0.0.1-SNAPSHOT.jar
Если вы не меняли переменные окружения, то нужно задать их при запуске проекта:
java -jar javlasovblog-0.0.1-SNAPSHOT.jar --spring.datasource.username=usernameDB --spring.datasource.password=passwordDB --session.email=email --session.password=password
Где:
- usernameDB - логин локальной базы данных;
- passwordDB - пароль локальной базы данных;
- email - почта для валидации безопасности от гугла (в моём случае);
- password - пароль, сгенерированный гуглом для валидации безопасности;
При запуске заменить usernameDB, passwordDB, email, password на ваши собственные значения.
В качестве БД используется SQL, в качестве СУБД используется MySQL (локально) и PHPAdministrator (деплой).
Для удобства покажу структуру БД в виде ER-диаграммы:
Также дамп базы данных будет доступен по ссылке вот тут
В базе данных будут лежать глобальные настройки (таблица global settings), остальные таблицы пустые, создавайте какие вам захочется сущности.
Тестовые методы прописывались для сервисного слоя (папка service).
В тестах были использованы такие технологии как JUnit 5 и Mockito.
Процент покрытие тестами были проверены с помощью встроенной утилитой среды разработки (Intelij IDEA) - Coverage.
Результаты покрытия тестами:
src -> main -> java -> com -> javlasov -> blog:
- annotations -> собственные аннотации на валидацию имени, пароля и почты;
- aop ->
- exceptions -> создание собственных классов ошибок; (наследников Runtime Exception)
- handlers -> кастомные обработчики тех или иных ошибок;
- api ->
- request -> классы-запросы от сервера, содержащие определенные переменные;
- response -> классы-ответы для сервера в результате обработки их сервисами;
- config -> настройка конфигурации проекта;
- constants -> постоянное значение формата даты и времени;
- controller -> слой контроллеров;
- dto -> объекты передачи данных; (DTO)
- mappers -> преобразователь POJO -> DTO;
- model ->
- enums -> классы Enum для Spring Security;
- entity-классы для таблиц базы данных;
- repository -> слой репозиториев базы данных; (Jpa)
- security -> настройки для авторизации и аутентификации пользователя;
- service -> сервисный слой; (обработка запросов)
Тесты:
src -> test -> java -> com -> javlasov -> blog -> service
- Maven;
- Spring;
- Spring boot;
- Spring Security;
- Spring Data;
- Hibernate;
- Junit 5;
- Mockito;
- MapStruct;
- Javax.mail;
- Jsoup;
- Lombok;
- Cage; (captcha)
- commons-io;
- jaxb-api;
- imgscalr-lib;
- assertj-core;
По всем интересующим вас вопросам можно писать на почту:
Или связаться со мной в телеграм:
This is a diploma project education platform Skillbox, course - Java-Developer.
This is a just blog, which is based in technology Spring Boot. (The list of used tecnlologies here)
On this blog:
- Watch other people's posts;
- Register;
- It is a possible to upload your photo. Correct format jpg/jpeg or png. You can also change a name, password and email.
- Write post;
- Edit your posts;
- Write comment and respond to them;
- Set like or dislike in publication;
- See statistics: all in blog or your;
- Find publictation: by word, by tag, by date;
Some mediafiles to dempnstration:
To run project in your local PK you need JDK 11, the system of control version git and maven.
Clone project can with git bash:
git clone https://github.com/VlasovM/JaVlasovBlog.git
Next, you need to change parameters such as password and login to connect the database, password and email for google security to send emails. These variables are stored in the application.properties file.
There are three ways to change these parameters:
- Just change the reference of the environment variable to its value;
- When starting a jar file, run it with the parameters;
For the first option, you need to configure the following environment variables:
- SESSION EMAIL
- SESSION PASSWORD
- DB_USERNAME
- DB_PASSWORD
Next, regardless of which method of change you have chosen, you should run the command:
mvn clean install
If you have changed the environment variables yourself, then you can run the project as follows:
java -jar javlasovblog-0.0.1-SNAPSHOT.jar
If you have not changed the environment variables, then you need to set them when starting the project.:
java -jar javlasovblog-0.0.1-SNAPSHOT.jar --spring.datasource.username=usernameDB --spring.datasource.password=passwordDB --session.email=email --session.password=password
Where:
- usernameDB - login of the local database;
- passwordDB - password of the local database;
- email - mail for security validation from google (in my case);
- password - a password generated by google for security validation;
At startup, replace usernameDB, passwordDB, email, password with your own values.
I use SQL as Database and MySQL (local) as Database Management System and phpAdmin (Deploy).
I will show the database structure in the form of an ER diagram:
The dump of databese will be here
Test methods were prescribed for the service (service folder).
In test used techlonogies JUnit 5 and Mockito;
The percentage of the test coverage was checked Coverage. (Intelij Idea utility)
Test coverage result:
src -> main -> java -> com -> javlasov -> blog:
- annotations -> own annotation to valid name, password and email;
- aop ->
- exceptions -> own class of exceptions; (extends Runtime Exception)
- handlers -> custom handler some exceptions;
- api ->
- request -> class-request from the server;
- response -> class-response for server;
- config -> setting configuration of project;
- constants
- controller
- dto -> data transfer object; (DTO)
- mappers -> transformer POJO -> DTO;
- model ->
- enums -> class Enum for Spring Security;
- entity-classes for the database;
- repository -> Jpa repository for DB;
- security -> setting for autentification users;
- service
Tests:
src -> test -> java -> com -> javlasov -> blog -> service
- Maven;
- Spring;
- Spring boot;
- Spring Security;
- Spring Data;
- Hibernate;
- Junit 5;
- Mockito;
- MapStruct;
- Javax.mail;
- Jsoup;
- Lombok;
- Cage; (captcha)
- commons-io;
- jaxb-api;
- imgscalr-lib;
- assertj-core;
My email: m.a.vlasov@gmail.com
My telegram: https://t.me/JaVlasov