https://github.com/fredericfouche/scribere-releases
[WIP]This project is a Medium clone with a Java/Spring Boot back-end and an Angular front-end.
https://github.com/fredericfouche/scribere-releases
angular java wip
Last synced: 2 months ago
JSON representation
[WIP]This project is a Medium clone with a Java/Spring Boot back-end and an Angular front-end.
- Host: GitHub
- URL: https://github.com/fredericfouche/scribere-releases
- Owner: FredericFouche
- Created: 2025-05-03T15:44:09.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-12T08:37:57.000Z (about 1 year ago)
- Last Synced: 2025-05-12T19:09:34.325Z (about 1 year ago)
- Topics: angular, java, wip
- Language: Java
- Homepage:
- Size: 46.8 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://github.com/FredericFouche/Scribere)
# Scribere
Scribere is a modern blogging platform that enables users to create, edit, and share rich-text articles with tags, search capabilities, and real-time indexing. It consists of a Spring Boot backend and an Angular frontend, with Postgres for data persistence, Meilisearch for fast search, and Flyway for database migrations.
## Table of Contents
- [Scribere](#scribere)
- [Table of Contents](#table-of-contents)
- [Tech Stack](#tech-stack)
- [Features](#features)
- [Project Structure](#project-structure)
- [Prerequisites](#prerequisites)
- [Getting Started](#getting-started)
- [Backend Setup](#backend-setup)
- [Frontend Setup](#frontend-setup)
- [Running with Docker](#running-with-docker)
- [Building for Production](#building-for-production)
- [Testing](#testing)
- [Backend Tests](#backend-tests)
- [Frontend Tests](#frontend-tests)
- [TODO](#todo)
## Tech Stack
- **Backend**: Java, Spring Boot, Maven, Flyway, PostgreSQL
- **Search**: Meilisearch
- **Frontend**: Angular 19, TypeScript, Tailwind CSS, SSR (Angular Universal)
- **DevOps**: Docker, Docker Compose
- **Testing**: JUnit, Spring Test, Karma, Jasmine
## Features
- Create, edit, and delete articles with rich-text support (Tiptap editor)
- Tagging system with UUID-based tags
- Full-text search powered by Meilisearch
- Database migrations using Flyway
- Responsive UI with Tailwind CSS
- Server-side rendering for SEO and performance
- RESTful API endpoints for articles and tags
## Project Structure
```plaintext
Scribere/
├── backend/ # Spring Boot application
│ ├── src/main/java # Application code and controllers
│ ├── src/main/resources
│ │ └── application.properties
│ └── src/test/java # Integration and unit tests
├── frontend/scribere/ # Angular application
│ ├── src/app # Components, pages, services, and pipes
│ ├── src/assets # Fonts, images
│ └── src/styles.css # Global styles
├── docker-compose.yml # Development and local multi-container setup
└── README.md # Project overview and setup
```
## Prerequisites
- Java 17+
- Maven 3.6+
- Node.js 18+ and npm
- Docker & Docker Compose (optional, recommended for local setup)
## Getting Started
### Backend Setup
1. Navigate to the backend folder:
```bash
cd backend
```
2. Configure database and Meilisearch in `src/main/resources/application.properties`:
```properties
spring.datasource.url=jdbc:postgresql://localhost:5432/postgres
spring.datasource.username=postgres
spring.datasource.password=postgres
meilisearch.url=http://localhost:7700
meilisearch.key=devkey
```
3. Run Flyway migrations and start the server:
```bash
mvn clean package
mvn spring-boot:run
```
4. The API will be available at `http://localhost:8080/api`.
### Frontend Setup
1. Navigate to the frontend folder:
```bash
cd frontend/scribere
```
2. Install dependencies:
```bash
npm install
```
3. Update API URL in `src/app/env/env.ts` if needed (default is `http://localhost:8080/api`).
4. Run the development server:
```bash
npm start
```
5. Open `http://localhost:4200` in your browser.
### Running with Docker
A full development environment can be started with Docker Compose:
```bash
docker-compose up --build
```
This will launch:
- PostgreSQL at `localhost:5432`
- Meilisearch at `localhost:7700`
- MinIO (object storage) at `localhost:9000`
- Backend at `localhost:8080`
- Frontend at `localhost:4200`
## Building for Production
- **Backend**:
```bash
cd backend
mvn clean package -DskipTests
```
- **Frontend**:
```bash
cd frontend/scribere
npm run build
```
Production artifacts will be generated under `backend/target` and `frontend/scribere/dist` respectively.
## Testing
### Backend Tests
Run the following command to execute all tests in the backend:
```bash
mvn test
```
### Frontend Tests
Run the following command to execute all tests in the frontend:
```bash
ng test
```
## TODO
- [ ] Ajouter la gestion de l'utilisateur en front
- [ ] Ajouter la possibilite de creer/supprimer un compte front
- [ ] Definir le guard et les routes qui sont a proteges
- [ ] Ajouter la gestion de l'utilisateur en back end
- [ ] Hashage du mdp avec bcrypt ?
- [ ] Creation des routes pour manager les comptes depuis un compte admin