๐Ÿ“ฆ Writing Express but feel like Spring Boot

Overview

Springpress

Custom top-level framework of Express.js, especially on TypeScript.

Springpress provides expressjs utilities out of the box, lets you deep dive into the world of OOP and the scent of our motivation, Spring Boot.

Installation

Node.js 16.15.0 (LTS) or higher is required.

Installing by using the following commands

Using npm:

$ npm install springpress

Using yarn:

$ yarn add springpress

License

License under the MIT license.

Comments
  • Wrap own Request/Response types

    Wrap own Request/Response types

    On routes in the controller class will receive Request, Response as a parameter to process the incoming request and the response but it needs to import the Request/Response type from Express.

    enhancement controller 
    opened by riflowth 1
  • Request reflection wrapper for working with route metadata

    Request reflection wrapper for working with route metadata

    Developers don't have to mess with the reflection by using reflect-metadata directly. Just use our route metadata utility methods to add some metadata to the route.

    example: #addRouteMetadata(data)

    • data should be key-value pairs
    enhancement controller 
    opened by riflowth 1
  • Request to implement Controller registry

    Request to implement Controller registry

    Need to implement the controller registry for managing the Controller instance.

    List of implementation (just an idea):

    • Error handler for wrapping the route instance for catching an error throw from a route implementation
    • Route registration into the express modular router
    enhancement controller 
    opened by riflowth 1
  • Add global middleware registration

    Add global middleware registration

    Feature

    • Add ControllerRegistry#registerGlobalMiddleware for middleware registration globally like express app.use #16

    Changes

    • Turn the Middleware interface into an abstract class
    controller middleware 
    opened by riflowth 0
  • Add route metadata and controller registry utility methods

    Add route metadata and controller registry utility methods

    Changes

    • [x] Add route metadata utility to work with route metadata
      • #9
    • [x] Wrap own Request, Response, and NextFunction from Express types
      • #10
    • Add ControllerRegistry#size to get registered controller count
    enhancement release controller 
    opened by riflowth 0
  • Fix HttpException reference error and refactor middleware

    Fix HttpException reference error and refactor middleware

    Changes

    • Fix ReferenceError: Must call super constructor in derived class before accessing 'this' or returning from derived constructor on HttpException class
    • Convert Middleware class to interface
    enhancement middleware 
    opened by riflowth 0
  • Release 1.0.0

    Release 1.0.0

    This is a tracking issue for release 1.0.0.

    List of changes for release:

    • [x] Add ControllerRegistry class to register a controller into the Express router #2
    • [x] Add Middleware support
    release 
    opened by riflowth 0
  • Release 1.0.0-alpha

    Release 1.0.0-alpha

    This is a tracking issue for release 1.0.0-alpha.

    List of changes for release:

    • [x] Add Controller class for marking the class as the controller following MVC architecture
    • [x] Add ControllerMapping, RequestBody, RouteMapping decorators for typescript for marking the method or class.
    • [x] Add basic custom error class for HTTP exception
    • [x] Add top-level class for managing the system called Springpress class
    release 
    opened by riflowth 0
Releases(1.3.3)
  • 1.3.3(Oct 8, 2022)

    What's Changed

    • Fix type Response extracting the wrong property from ApiSchema, it should extract res not body

    Full Changelog: https://github.com/vectier/springpress/compare/1.3.2...1.3.3

    Source code(tar.gz)
    Source code(zip)
  • 1.3.2(Oct 8, 2022)

    What's Changed

    • Refactor request and response types for reusing by @riflowth in https://github.com/vectier/springpress/pull/21

    Full Changelog: https://github.com/vectier/springpress/compare/1.3.1...1.3.2

    Source code(tar.gz)
    Source code(zip)
  • 1.3.1(Sep 30, 2022)

    What's Changed

    • Support Node version >= Gallium LTS (16.17.0)

    Full Changelog: https://github.com/vectier/springpress/compare/1.3.0...1.3.1

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Aug 11, 2022)

    What's Changed

    • Fix some grammatical errors in README documentation by @nnarct in https://github.com/vectier/springpress/pull/19
    • Add global middleware registration by @riflowth in https://github.com/vectier/springpress/pull/20

    New Contributors

    • @nnarct made their first contribution in https://github.com/vectier/springpress/pull/19

    Full Changelog: https://github.com/vectier/springpress/compare/1.2.2...1.3.0

    Source code(tar.gz)
    Source code(zip)
  • 1.2.2(May 14, 2022)

    What's Changed

    • Add Server/Controller usage in README.md by @riflowth in https://github.com/vectier/springpress/pull/17
    • Fix request body issue cause from wrong sequence middleware invoking by @eltfshr in https://github.com/vectier/springpress/pull/18

    New Contributors

    • @eltfshr made their first contribution in https://github.com/vectier/springpress/pull/18

    Full Changelog: https://github.com/vectier/springpress/compare/1.2.1...1.2.2

    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(May 6, 2022)

    What's Changed

    • Fix wrapped type from Express not working by @riflowth in https://github.com/riflowth/springpress/pull/12
    • Allow duplicated controller registration but not encouraged by @riflowth in https://github.com/riflowth/springpress/pull/15

    Full Changelog: https://github.com/riflowth/springpress/compare/1.2.0...1.2.1

    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(May 2, 2022)

    What's Changed

    • Add route metadata and controller registry utility methods by @riflowth in https://github.com/riflowth/springpress/pull/11

    Full Changelog: https://github.com/riflowth/springpress/compare/1.1.0...1.2.0

    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(May 1, 2022)

    What's Changed

    • Fix missing declaration file when publish to NPM by @riflowth in https://github.com/riflowth/springpress/pull/8

    Full Changelog: https://github.com/riflowth/springpress/compare/1.1.0...1.1.1

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(May 1, 2022)

    What's Changed

    • Release 1.0.0-alpha by @riflowth in https://github.com/riflowth/springpress/pull/1
    • Release 1.0.0 by @riflowth in https://github.com/riflowth/springpress/pull/3
    • Use new Node LTS version 16.15.0 by @riflowth in https://github.com/riflowth/springpress/pull/4
    • Improve middleware extendability on implementation by @riflowth in https://github.com/riflowth/springpress/pull/5
    • Fix fallback middleware does't not working by @riflowth in https://github.com/riflowth/springpress/pull/6
    • Fix HttpException reference error and refactor middleware by @riflowth in https://github.com/riflowth/springpress/pull/7

    New Contributors

    • @riflowth made their first contribution in https://github.com/riflowth/springpress/pull/1

    Full Changelog: https://github.com/riflowth/springpress/commits/1.1.0

    Source code(tar.gz)
    Source code(zip)
Owner
Vectier
Coding can change the world ๐ŸŒ
Vectier
Very simple full-stack application using React, Java Spring Boot, and PostgreSQL

Very simple full-stack application using React, Java Spring Boot, and PostgreSQL. The API was built following the N-Tier architecture. The goal was to explore and learn more in-depth the development of APIs, the use of Docker and deploying with AWS.

Diego Quintela 0 Apr 23, 2022
Spring Boot + Angular: File Upload & Download Example

Spring Boot + Angular: File Upload & Download Example User Interface Local setup Step 1: Download or clone the source code from GitHub to a local mach

Sibin Rasiya 3 Sep 3, 2022
Piccloud is a full-stack (Angular & Spring Boot) online image clipboard that lets you share images over the internet by generating a unique URL. Others can access the image via this URL.

Piccloud Piccloud is a full-stack application built with Angular & Spring Boot. It is an online image clipboard that lets you share images over the in

Olayinka Atobiloye 3 Dec 15, 2022
Placebo, a beautiful new language agnostic diagnostics printer! It won't solve your problems, but you will feel better about them.

Placebo A beautiful new language agnostic diagnostics printer! โ”Œโ”€[./README.md] โ”‚ > 1 โ”‚ What is Placebo? ยท โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€ ยท

Robin Malfait 78 Dec 16, 2022
The awesomebooks project is a simple list, but separated into 3 parts and given a retro feel. The main page is where we can add books, and on another page we can see the list, and remove items. There is also a "contact-us" page.

Awesome Books This is the restructured version of the famous awesome-books project! Here you can find JavaScript broken into modules, using import-exp

Matt Gombos 12 Nov 15, 2022
A sliding puzzle with a Rubik's cube-like feel.

Alok's Sliding Puzzle A sliding puzzle with a Rubik's cube-like feel. Play: https://www.quaxio.com/sliding_puzzle/puzzle.html Screenshot: Building loc

Alok Menghrajani 10 Jun 7, 2022
Aron 8 Dec 17, 2022
In game dev, generative art, and creative coding, sine is a ubiquitous function that is often used as a spring-like oscillator for a given parameter.

In game dev, generative art, and creative coding, sine is a ubiquitous function that is often used as a spring-like oscillator for a given parameter.

Mark Racette 3 Feb 22, 2022
AdsPower supports Local API, which has functions like reading and writing account configuration information, opening and closing browsers, searching for accounts.

AdsPower supports Local API, which has functions like reading and writing account configuration information, opening and closing browsers, searching for accounts. Besides, it can cooperate with Selenium and Puppeteer to execute browser operations automatically.

AdsPower Official 20 Dec 1, 2022
A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebWorker like neither of those.

Amuchina A work-in-progress HTML sanitizer that strives for: performance like window.Sanitizer, readiness like DOMPurify, and ability to run in a WebW

Fabio Spampinato 9 Sep 17, 2022
This repo is a collection of code samples and links to previous twitch live stream sessions. If you have any ideas or suggestions for future episodes, feel free to open an issue.

Talk DEV to me Talk DEV to me is a monthly show on twitch.tv/aws hosted by Tiago Barbosa and Alex Melnyk, where we invite customers, partners, or Amaz

AWS Samples 122 Jan 6, 2023
An extensible HTML DOM window manager with a professional look and feel

Wingman An extensible HTML DOM window manager with a professional look and feel. Installation Wingman only requires two files: wingman.css and wingman

nethe550 1 Jan 21, 2022
Api for playing around with dummy data. Feel free to use it in your demo projects, tutorials, or testing tasks.

dummy-api Api similar to dummy-api Api for playing around with dummy data. Feel free to use it in your demo projects, tutorials, or testing tasks. All

Donald Wu 4 Jan 7, 2023
Remix enables you to build fantastic user experiences for the web and feel happy with the code that got you there. In this workshop, we'll look at some more advanced use cases when building Remix applications.

?? Advanced Remix Workshop Remix enables you to build fantastic user experiences for the web and feel happy with the code that got you there. In this

Frontend Masters 167 Dec 9, 2022
Remix enables you to build fantastic user experiences for the web and feel happy with the code that got you there. Get a jumpstart on Remix with this workshop.

?? Remix Fundamentals Build Better websites with Remix Remix enables you to build fantastic user experiences for the web and feel happy with the code

Frontend Masters 204 Dec 25, 2022
Feel free to create new file, don't hesitate to pull your code, the most important thing is that the file name here must match your nickname so that file does not conflict with other people.

Hacktoberfest Indonesia Apa Itu Hacktoberfest ? Hacktoberfest adalah acara tahunan yang bertujuan untuk mendorong berkontribusi kedalam ekosistem open

Juan Daniel 5 Dec 15, 2022
Hi, Spring fans! In this installment we look at the just-released Hilla framework, from our friends at Vaadin

Custom project from Hilla This project can be used as a starting point to create your own Hilla application with Spring Boot. It contains all the nece

Spring Tips 11 Nov 17, 2022
Quick and easy spring animation. Works with other animation libraries (gsap, animejs, framer motion, motion one, @okikio/animate, etc...) or the Web Animation API (WAAPI).

spring-easing NPM | Github | Docs | Licence Quick and easy spring animations. Works with other animation libraries (gsap, animejs, @okikio/animate, mo

Okiki Ojo 34 Dec 14, 2022