Giter VIP home page Giter VIP logo

newsler's Introduction

Newsler Project

Newsler is about to make your mailing even more effective!

Newsler Project aggregates different email sending solutions into one centralised and standardised solution.

Currently supported solutions:
Solutions that will be supported:

Table of Contents

Technologies Used

  • Java 17
  • Spring Boot 3.0.1
  • Spring Security
  • Spring Data JPA
  • JWT
  • H2 Database
  • Gradle
  • Docker

Getting Started

Preconditions

Email Labs Account Settings

In order to have Newsler Project fully working you have to provide correct, and above all true, Email Labs account details such as SMTP account, App Key, Secret Key and Email Labs authorised email address.

SMTP emulation

To emulate SMTP activity, the development version uses the docker maildev image.

H2 Database setup

In order to enter the correct, and above all true, Email Labs account details such as SMTP account, App Key, Secret Key and Email Labs authorised email address you should enter these details in one of the supported ways

  • via environment variables (names below):
    • NEWSLER_APP_KEY
    • NEWSLER_SECRET_KEY
    • NEWSLER_SMTP
    • NEWSLER_EMAIL
  • via the keystore file - available soon

Run Newsler Project

  1. If this is your first ever run gradle runMailDevContainer task
  2. Or pull and run docker maildev image by providing following commands:
    docker pull maildev/maildev
    docker run -p 1080:1080 -p 1025:1025 maildev/maildev

To run this application on your local machine, follow these steps:

  1. Before application start make sure you have maildev docker container running.

  2. Clone this repository to your local machine.

     git clone https://github.com/Pumbakos/Newsler.git
  3. Open a terminal and navigate to the root directory of the project.

  4. Run the following command to start the application:

    ./gradlew bootRun
  5. Open your web browser and go to http://localhost:8080.

Application Configuration

Newsler Project can be configured to run in two modes - HTTP or HTTPS, depending on the configuration specified by the user. This allows for flexibility in terms of security and communication protocols, as the user can choose the appropriate mode based on their needs and requirements.

By default, the application runs in HTTP mode, but it can be configured to run in HTTPS mode by specifying the appropriate CLI argument or environmental variable. This ensures that the application can be tailored to meet the specific security needs of the user. Additionally, the ability to switch between modes allows for greater compatibility with different environments and systems, as the user can choose the appropriate mode based on the requirements of their specific use case.

To set the application into HTTPS mode, properties must be provided in at least one way: (keep in mind that CLI arguments carry higher priority than environmental variables). Properties to provide:

  • newsler.ssl.keystore.file path to keystore file
  • newsler.ssl.keystore.password password to keystore file
  • newsler.ssl.keystore.type keystore type, preferably JKS
  • newsler.ssl.keystore.alias keystore alias

Configuration via configuration file will be available soon.

Application Architecture

In Newsler Project, the hexagonal architecture (also known as "port and adapter architecture") has been used. The hexagonal architecture is a design pattern that allows for the separation of business logic from technical implementations.

To find out more about hexagonal architecture visit this wiki page.

To find out more about Newsler's architecture visit ARCHITECTURE file

Application Security

Newsler Project uses Spring Security and JWT (JSON Web Tokens) for authentication and authorization. Spring Security is a powerful and customizable framework that provides a wide range of security features, while JWT is a widely-used standard for securely transmitting information between parties as a JSON object.

To find out more about Newsler's security visit SECURITY file

API Documentation

The API documentation will be available soon!

Contributing

Contributions to this project are welcome. If you notice any bugs or have suggestions for new features, please create an issue or submit a pull request.

License

This project is licensed under the GPL-3.0 license. See the LICENSE file for details.

newsler's People

Contributors

pumbakos avatar

Stargazers

 avatar

Watchers

 avatar

newsler's Issues

JWT Filter does not work properly

JWTFilter does not provide the behavior that is desired - authorizes requests but it is hard infer when request does not pass through. Possble issue is in config

User component

Add user component to:

  • register new users
  • manage existing users

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.