Skip to content

foferys/foferys_journaling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Foferys Journaling

========= Java Spring Boot Thymeleaf PostgreSQL Docker

Description

Web app di journaling con Spring Boot + Thymeleaf.

Permette di:

  • login con GitHub OAuth2 oppure account locale
  • creare/modificare/eliminare pensieri (“fusa”) con immagine
  • visualizzare un grafico stile GitHub contributions basato sulla costanza giornaliera (JournalingActivity)
  • gestire il profilo utente (account page + edit profilo).

Example Usage

Avvia l’app e apri:

http://localhost:8080

Rotte principali:

GET  /             (home: richiede login)
GET  /formlogin    (pagina login)
GET  /signup       (registrazione)
GET  /fusa         (lista fusa + contribution graph)
GET  /account      (pagina account)

Endpoint utile per debug:

GET /whoami

Setup (Local)

Requirements

  • Java 17
  • Maven
  • Docker (consigliato per Postgres)

Setup Locale

  1. Copia il file .env.example in .env:
   cp .env.example .env
  1. Modifica .env con le tue credenziali:

  2. Avvia l'applicazione:

   mvn spring-boot:run

Configurazione Database

Assicurati che PostgreSQL sia in esecuzione sulla porta 5434 con il database journalingdb.

1) Start database (Docker Compose)

Il progetto include docker-compose.yaml con:

  • PostgreSQL su localhost:5434 (user/pass: foferys)
  • pgAdmin su localhost:5051
docker compose up -d

2) Configure application.properties

File: src/main/resources/application.properties

Esempio (da adattare):

spring.datasource.url=jdbc:postgresql://localhost:5434/journalingdb
spring.datasource.username=foferys
spring.datasource.password=foferys

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect

spring.security.oauth2.client.registration.github.client-id=TUO_CLIENT_ID
spring.security.oauth2.client.registration.github.client-secret=TUO_CLIENT_SECRET

Nota: per un repository pubblico è consigliato spostare i segreti in variabili d’ambiente o in un file non versionato (es. application-local.properties).

3) Run

mvn spring-boot:run

Features

  • Auth

    • OAuth2 GitHub (spring-boot-starter-oauth2-client) con CustomOAuth2UserService
    • login/registrazione locale con password cifrata (BCrypt)
    • security config in WebSecurityConfig (form login + oauth2 + logout).
  • Fusa (CRUD)

    • create/edit/delete sotto /fusa tramite FusaController
    • immagini salvate in src/main/resources/static/images/
    • entità Fusa collegata a User.
  • Git-style activity graph

    • JournalingActivity conta quante fusa vengono create in un giorno
    • render del grafico in templates/fusa/index.html via JS con livelli 0–4.
  • Account

    • /account (profile page) + /account/modificautente (edit profilo)
    • gestione errori password con PasswordMismatchException.

Project structure (high level)

  • config: WebSecurityConfig, CustomOAuth2User*
  • controller: HomeController, FusaController, AccountController, SignupController
  • models: User, Fusa, JournalingActivity + DTO/builder
  • services: UserService, FusaService + repository JPA
  • templates: pagine Thymeleaf (formlogin, signup, fusa/*, account/*).

Testing

mvn test

Contributors ✨

foferys
foferys

About

Web app di journaling con Spring Boot + Thymeleaf.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors