Giter Club home page Giter Club logo

jynx's Introduction

Issues Forks Stars Release Version Codacy Badge Build WorkFlow

Jynx (Project under development...)

Jynx is an asynchronous label image detector. It exposes an endpoint that receive any image, write in a storage, send to a processing queue using RabbitMQ and the consumer renders the image using Google Vision API.

The Jynx is my first project in Quarkus the Supersonic Subatomic Java Framework and the goal is improve my knowledge with this Framework.

If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .

Technologies

How this project work

This project has one endpoint to register images, it writes that image in a storage, register the information in a database and send the identification in a messaging service to be async processed. This endpoint return an identification marked with processing status.

The async process will be started when the queue receives the message. The routine get the identification message to will recovery the information of database and recovery the image to will be process. The process send to label image detection service the image, and the response will be recorded in database and finally will notify the messaging service in other exchange.

Architecture

The architecture used in this project was based on Clean Architecture but more flexible with only one layer separated by packages.


Article about Clean Architecture by Guilherme Zarelli

To guarantee this architecture, the dependency ArchUnit will be used.


Environments

ENV Description Default value
DATABASE_URL Database URL IN DEVELOP MODE
DATABASE_USERNAME Database username IN DEVELOP MODE
DATABASE_PASSWORD Database Password IN DEVELOP MODE
RABBITMQ_HOST RabbitMQ Host IN DEVELOP MODE
RABBITMQ_VHOST RabbitMQ Vhost IN DEVELOP MODE
RABBITMQ_USERNAME RabbitMQ username IN DEVELOP MODE
RABBITMQ_PASSWORD RabbitMQ password IN DEVELOP MODE
GOOGLE_APPLICATION_CREDENTIALS File of GCP Credentials NO

Running the application in dev mode

You can run the infrastructure needed for this project using the (docker-compose.yml)[./docker-compose.yml]

docker-compose up -d

You can run your application in dev mode that enables live coding using:

./gradlew quarkusDev

Access Swagger UI:

http://localhost:8080/q/swagger-ui

Requests Samples

See the request samples in this file: request-samples.html

Packaging and running the application

The application can be packaged using ./gradlew quarkusBuild. It produces the jynx-1.0-SNAPSHOT-runner.jar file in the build directory. Be aware that it’s not an über-jar as the dependencies are copied into the build/lib directory.

The application is now runnable using java -jar build/jynx-1.0-SNAPSHOT-runner.jar.

If you want to build an über-jar, just add the --uber-jar option to the command line:

./gradlew quarkusBuild --uber-jar

Creating a native executable

You can create a native executable using: ./gradlew build -Dquarkus.package.type=native.

Or, if you don't have GraalVM installed, you can run the native executable build in a container using: ./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true.

You can then execute your native executable with: ./build/jynx-1.0-SNAPSHOT-runner

If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling#building-a-native-executable.

jynx's People

Contributors

codacy-badger avatar gbzarelli avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

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.