Heroic - Scalable Web Application

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#1
1546805138037.png

About
Heroic was created with one clear objective: Provide a stable and modern base for retros. Historically, the scene has been used to the old way of managing websites but not anymore. Heroic is a modern web app that is built using the latest trends in development.

The front end is written using Typescript + React with Redux.
The back end is written using Typescript + Nest with TypeORM (and Fastify for performance)

Stability
The primary goal is to provide a stable platform. Heroic doesn't aim to provide the most features, but it does aim to provide features that are bug free, or the closest you can get to it and well tested for future proofing.

Performance
You want to save money while also providing a great interface for your users. Heroic is built with a streamlined API and a front end that can be ran on a server-less stack (ie: a CDN) to help save on bandwidth and servers.

Security
In the past, Heroic was briefly partnered with a project known as Cyclone. This was thought to be a good move to help ensure the community moves in a modern direction and finally gets to use HTML5. However, the developers and affiliated projects with Cyclone, namely Arcturus, have moved to ignore user privacy and security. Features such as data tracking for analytics, error logs (that would include sensitive content) and even backdoors to help provide "better support."

Heroic could no longer remain affiliated with these projects. Due to this experience, I have decided to make the security and privacy of the end users a huge goal for Heroic. I plan on developing Heroic to take a stronger stance on privacy for both retros and their users. Steps such as hashing emails, IP's and so forth are planned. Most importantly, your experience with Heroic will never be tracked and sent back to me or anyone else.

Database Support
Heroic plans on supporting the following emulators and developments.
1. Arcturus Morningstar by the Krews community (Flash Client)
2. Nitro by Bill (Flash and HTML5 Client)
3. Plus Emulator by Craig and others (? - Possible)

Extending Heroic
Heroic is built on NestJS. Nest is a great framework built around the concept of modularization which makes extending Heroic a breeze. You can simply make your own Nest module and extend Heroic!

Discord
It is encouraged to join the Discord community to find out updates quicker and get a sneak preview into the dev side of things. No other forums will be discussed here nor external links to sites.
[ To view this link you must register here. ]

Github
Github is used heavily for issue tracking, branching and merge requests. You can find the latest builds and dev branches here. This is the official and sole Github repository that is updated by me.
[ To view this link you must register here. ]
 
Last edited:

ZaneyRetros

Active Member
Messages
164
Likes
69
#3
Amazing, hope everything goes well! I actually cannot wait to use this. Continue your great work, good luck.
 

Logic

Bobby Billboard
Messages
736
Likes
203
#4
I'd like to see this be compatible with PlusEMU. I moved away from Arcturus ages ago due to it being closed source and bugs in which will be fixed whenever the developer feels like getting around to them. Nonetheless, good work. I've been following your development for quite some time.
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#5
Heroic two is receiving a steady flow of updates now. The thread has been updated to show this and will remain updated as well.

Discord [ To view this link you must register here. ]
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#6
Updates
Two separate branches are being maintained as of right now and will be merged into production for release (2.1.4)

Main
This is the current operating branch that PRODUCTION and DEVELOPMENT are built on which is from the original foundation of 2.0. The updates and changes to this branch are summarized as followed.
  1. Upgraded all dependencies to their latest respective version
  2. Added more static folders that can be utilized by the user when compiled
    1. User will place their respective css or image files in the folder "/public/assets"
    2. User also can host their own SWFs through Heroic by creating a folder called "swfs" under "/public/assets"
  3. Added a Github version checker to admin panel to warn users of beta versions, or if a new upgrade is available
  4. Fixed numerous bugs including store purchase bugs,
  5. Fixed a major bug that did not allow people to connect to their website unless it was through localhost
  6. Fixed the default database and still working towards providing a good clean base for users
  7. Started working on the Commander module which will run and configure your emulator for you
  8. Fixed a major bug that did not fetch the packages, nor configuration on Windows-based systems due to an issue with finding the process's current working directory
  9. For more information please refer to the following
    1. Github Issue Tracking : [ To view this link you must register here. ]
    2. Github Projects: [ To view this link you must register here. ]
MVC Core
Due to the code being compiled, using external libraries such as Atreus (Heroic 3) which are not compiled with the main source would not work out too well. Due to this, I am rewriting Heroic into a cleaner core framework that will extend easier as the source grows. It is mostly based around the current setup, however has a lot of small changes including a few helper classes to reduce issues on compiled code.

This code branch can be viewed here: [ To view this link you must register here. ]


Reminder
When wanting to run your hotel; two opportunities are available to you based on your skill level or needs. For those wanting a stable website which provides an admin panel, lots of features and security - the standalone version is a good fit suited for your hotel. Standalone builds are available [ To view this link you must register here. ]

If you wish to customize your experience, you can do so by building on the main code source without compiling.
 


Updates

Development on the 2.0 series has came to a pause and will continue onwards with the MVC-CORE branch when it hits a stable build. This is to ensure that we can move our users (you!) to a secure CMS and avoid the dependency issues of the 2.0 series.

Changes TO MVC-CORE
- Session management is finished
- Changed to a MCS structure (Model, Controller, Service)
- Not much else to report

Difficulties
I switched from Bookshelf to Objection which is throwing a learning curve at me from how it handles data responses. I'm looking at a way around having to wrap JSON.parse(JSON.stringify)) in each return. Wish me luck!

Fastify doesn't implement Express's behavior with middlewares past the basics - so I had to do a bit of soul searching before I came across a solution, which is oddly enough similar to what a middleware would do (imo), but wasn't documented heavily! (See: [ To view this link you must register here. ] )



Github Issue Tracking
I am trying to document what needs done a bit more so others can contribute or suggest ideas. Feel free to look or participate. [ To view this link you must register here. ]
 


Updates
  • I have removes services and integrated them back into controllers
  • I have added more sub-directories which groups similar functions together
  • I have optimized the code a bit more
  • Reduced start-up time for development builds by enabling Babel's compact mode
  • Added permission checks to the Permission Interactor
  • Working on an error handler that runs on all HTTP controller (see: [ To view this link you must register here. ] )
Heroic Standalone Updates
I have pushed the fixed-version (2.1.3-alpha2) of Heroic's 2.1 current series which includes support for swf hosting/custom css/custom logos/etc
 

Wess

BYPASSING OVERRIDE
Staff member
FindRetros Moderator
Messages
3,785
Likes
2,118
#7
Development is looking good. Switching to an MVS is an interesting choice, why did you do this?
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#8
Development is looking good. Switching to an MVS is an interesting choice, why did you do this?
I actually reverted the change back to the standard MVC structure.

Initially my plan was to be able to re use services but the app won’t be big enough to ever take advantage of them. In the future I may add an EmailService or something along the likes that also spawns on a child process

Development Updates
  • Started working on a documentation website for beginners
  • Merged MVC-Core into the main development branch which means that 2.1 will no longer receive updates and the next release will be 2.2x
 
Website for tutorials / guides
[ To view this link you must register here. ]
 


Updates
  • I am working on the frontend system using Vue 2
  • I have got the basic file structure down and global component/recursive support
    • ie: Header component, news jumbotron, etc
  • Working on authentication on frontend side
  • Just moved to a new place so can't merge Github until I get internet turned on (CBF to waste my phone's hotspot data)
 

Updates

  • Authentication is supported on the new frontend
  • I have rewrote the header components to be separated into multiple ones
    • Header (Large) which is used on guest areas mostly, ie: Login
    • Header (Small) which is used across the app with few exceptions
    • Navigation which is used everywhere and is dynamic based on the current route
    • User Menu which just contains the little avatar and name in the top right
  • I am also putting in effort at creating the systems apart from eachother
    • What this means is instead of rushing the back and front end systems together at once; I am going to design and make the frontend have what I actually want for the end product before going on and adding more features into the backend.
    • I am hoping this will result in a cleaner final product and a better user experience
 

 
Heroic is now using StandardJS and has passed all tests.
 
Beta Testing
[ To view this link you must register here. ]
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#10

Announcement
Heroic 3.0 has changed to a new version naming schema to help with user confusion. Heroic 3 is now Heroic Arctic Fox
Updates

- Fixed a bunch of various bugs around the frontend
- Added client support to the frontend (finally)
- Fixed a lot of various issues on the Admin Panel session handler
- Now writing the admin panel
- Changed the thread content to a clean brochure-style image for clarity on this project

For Developers
- Changed from tabs to double spaces to help reduce empty spacing in my project
- Implemented Standard.JS on the Admin Panel's frontend code
- Changed anything modifying Arcturus tables and or names to its own heroic_ table (ie user_guestbook to heroic_guestbook)
- Working on adding VueX models into the frontend
- Automated a few more things on NPM's package.json to help with reducing debug times

Coming Soon
- Multiple theme support
- Multiple language support (Admin panel will only be English.)
- Possible: Real Time (WebSocket) app

Cute Pictures
Admin Panel Progress: [ To view this link you must register here. ]
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#12
When are we able to install this?
When it’s released
 
Updates
- Many huge bug fixes
- Optimized session handler on both admin and user side
- Rewrote majority of the user side to be as optimized and clean as the admin side
- Redesigned a bulk of the admin features
- Added news article management, user role management, up to date command viewing (by querying INFORMATION_SCHEMA columns on permission table), etc
- Updated all dependencies from development ones to production and tested

Other:
- A new branch has been started which is an optimized version of Heroic with no static routing and only the core API which is designed for my hotel features, however is welcome for anyone else to use who wishes to host static files on an external CDN (recommended)
 
bump
 
Updates
- Several new branches are in development, currently.
- The (Core) branch for my hotel has been removed entirely and replaced with the new (Development) branch which focuses on optimizing the system despite going at it from scratch
- The technological reliance will still remain untouched with using Standard Formatting, Fastify Web Server, Objection ORM, MYSQL2 Driver with the addition of web workers (Cluster)
- I have redone a lot of the systems original methods ie: The new routing approach follows a Laravel-Style versus my original one of numerous JSON data schemas
- All folders will no longer contain multiple levels, ie: models will be an individual folder with numerous models instead of the models->hotel->table to aide in organization
- The frontend has been restarted using Vue-CLI 3 taking advantage of its latest updates and VueX

You can see changes with the backend code so far here,
[ To view this link you must register here. ]
 
Updates
A brief summary
  1. User logins are officially working once again
  2. User registrations are working once again
  3. Work has been done on the User API to allow optional relation fetching including (users_settings, users_badges, bans) and more to come
  4. Heroic's settings API has been officially added
  5. Optimized the HTTP server instance once more
  6. Changed the new-frontend system to work with the new-api system as well
  7. Starting work on the ban system on the frontend now, before moving onto the regular boring stuff (News, Staff Page, etc)
  8. Actually trying to make commits fairly often based on feature changes so its easier for both of us to track changes to Heroic!
  9. For any confusion, this is Heroic 3.0 still (Arctic Fox) despite being another rewrite of the already 3 branch, due to no production build being developed.
  10. Commit log available here: [ To view this link you must register here. ]
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#14

Commits
upload_2018-8-20_5-24-19.png

Explanation

I have finally merged the frontend code into the primary repository for ongoing development. A huge portion of the API has been wrote today, including JWT authentication, more user options, permission viewing, news viewing and so forth.

Repository
[ To view this link you must register here. ]
 
Updates
Mainly frontend updates. The frontend is now what I would consider 80% complete with the addition of the community pages such as photos, rooms, news and even staff! I have also made a huge update by updating the entire source to the highest eslint standards on StandardJS and am working on another copy using AirBNB to decide which one will be the primary code style. Entire system works reliably and very quickly!
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#16
this looks awesome. I really want to use this, too bad i don't use arcturus. Any plans on making it compatible with plus db?
0 Plans on Plus integration. I don't support emulators that lack stable updates, a stable API to develop alongside of and hundreds of versions from hundreds of developers.
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#18
Heroic 3 is finished and has been for some time. [ To view this link you must register here. ]
 
I have decided to start another chapter in this development, by creating another branch of Heroic that incorporates the frontend by default and is easier to get started with. Shout out to @treebeard for making it more known to me that I as a developer, should offer an easier way to get my projects rolled out

Heroic 3S (Such a clever name, thanks Apple)
  • Will be shipped with a prebuilt version of the frontend incorporated
  • Plans on shipping as a compiled binary are also in the working
 
Messages
119
Likes
11
#19
Heroic 3 is finished and has been for some time. [ To view this link you must register here. ]
 
I have decided to start another chapter in this development, by creating another branch of Heroic that incorporates the frontend by default and is easier to get started with. Shout out to @treebeard for making it more known to me that I as a developer, should offer an easier way to get my projects rolled out

Heroic 3S (Such a clever name, thanks Apple)
  • Will be shipped with a prebuilt version of the frontend incorporated
  • Plans on shipping as a compiled binary are also in the working
Always nice to see your retro projects Chris. Great with a more easier way to use it, so your projects can be used more widely, as they are better than most!
 

LeChris

Well-Known Member
Messages
2,644
Likes
1,232
#20
Been a long time since my last update (Hint: I was being an asshole to staff), anyways here it goes:
- Heroic 3S has became the De Facto Standard for now on
- I have pushed all of my custom features to Heroic (Maintenance page, online users page, ability to view online user count, etc)
- Added a README that shows how to start heroic, edit heroic and so forth on the Github for anyone curious
- Starting a rewrite on the server API to ease the process of the next update which will add an admin panel
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Top