Giter Club home page Giter Club logo

freeboot's Introduction

Freeboot.io

A code generation web-app for spring-boot projects.

Given just a package name and the name of business entity wish to model, Freeboot.io will generate an entire spring-boot project capable of all CRUD operations that includes:

  • @RestController implementation
  • Interface, @Service and Repository implementation
  • jQuery Rest Client to consume RESTful web services
  • embedded h2 in-memory database
  • embedded tomcat container to run the application

Many more features are planned. The ultimate goal would be full-stack microservice generation.

About Freeboot.io

It is an open source project and contributions are welcome. The project was started as a rapid prototyping tool inspired by the likes of LayoutIt, Initializr and Spring Initializr.

Development Philosophy

Freeboot.io is born out of the UNIX philosophy's rules of generation and optimization.

The rule of generation:

Developers should avoid writing code by hand and instead write abstract high-level programs that generate code. This rule aims to reduce human errors and save time.

The rule of optimization:

Developers should prototype software before polishing it. This rule aims to prevent developers from spending too much time for marginal gains.

How It Works

Freeboot.io's code generation capability is powered by java emitter templates. Java emitter templates (henceforth JETs) provide a simple JSP like syntax which you write very natural looking templates in. Sprinkled through the JETs are calls to a model in behind the template that carries the data we wish to use (e.g name of our package, class, case formatting logic etc.). The JETs are developed offline inside the Eclipse IDE and because the project includes the JET Nature, every time you hit Ctrl+s when editing a .javajet file the JET code generation framework outputs a bunch of xyzTemplate.java files which are the classes that perform our code generation when the live web-app is running. Essentially these xyzTemplate.java concatenate a bunch of strings together in the right order to produce the same output as we specified in our .javajet template. The generate() method of these templates is invoked when a call to the /generate REST endpoint is made, the user input package and class name is passed into the generate() method as a model and the resulting generated code is returned to the page as JSON where it is formatted and displayed to the user.

freeboot's People

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.