Giter VIP home page Giter VIP logo

fenix's Introduction

Fenix Web Server

Fenix is a desktop web server for developers. Check out fenixwebserver.com for details. There are some YouTube videos of the old version. We do not yet have any screencasts of v3.0.0, but a live demo for Bleeding Edge Web was recorded during the early development days.

Fenix 3.0.0

Sponsors (as of 2020)


If you're using Fenix, we'd love your feedback!

Fenix 3.0.0 release candidate 13 for macOS and Windows is available.

Join the Mailing List (signup on the bottom of the page)

Tweet v2.0 Downloads v3.0.0 Downloads


UPDATE 9/18/19 Fenix 3 is done, for both Mac and Windows. We had to cut a few things, like automatic updates (it will prompt you to download a new version when new updates are available). Unfortunately, the tools for updating an Electron app aren't really sufficient enough to support some of the new features (like the built-in CLI, updating the PATH, etc). We are working on a more streamlined autoupdate experience, which will power future versions.

Fenix 3 is just one of several things we've been working on under the Author.io brand to make writing software a more efficient/enjoyable process. Since there are several efforts underway (and only 2 of us working on everything), we're also spending time to turn Author.io into a full-fledged company. Don't worry, Fenix will still be free... we're exploring other monetization options to support continued development, as well as sponsorship for the many open source efforts we're puring time into.

We're also nearly finished with the following:

  • NGN 2.0.0 - A JS library for building your own frameworks.
  • Chassis - A PostCSS pre-processing framework.
  • Web Components - A web component library.
  • Metadoc - A JS documentation utility that produces JSON.

NGN, Chassis, and the web components were all used to build Fenix 3 and the associated websites. NGN has been battle-tested with clients like TopGolf, Aunt Bertha, and several enterprises. We're actively working on Metadoc to produce better documentation for the Fenix 3 API libraries.

We've also released the initial Fenix 3 docs.

A placeholder website for author.io, a Twitter account @author_io and an Author.io Facebook Page are live.

For those we invited to the early beta, thank you. Your feedback has been invaluable. I'd also like to publicly thank those of you who have donated. Your support means the world to us!

We have some exciting new things coming in 3.0.0:

Base

  • Abstracted Foundation (i.e. our electron boilerplate)
  • Middleware Plugin System (Internal Use Only)
  • UI Plugin System (Internal Use Only)

The plugin system is only for internal use. We hope to expand this for developer use in a later edition.

Open Core

  • Autoupdate macOS (evergreen) - No more ridiculously long delays between updates!
  • Autoupdate Windows (evergreen) - 90% done.
  • Brand new UI.
  • Native CLI app (no need to npm install fenix-cli anymore).
  • Automatic port management.
  • Port conflict resolution via porthog
  • Replace Growl w/ Native System Notifications.
  • Optional JS/CSS minification.
  • Optional GZip compression.
  • Optionally Render Markdown as HTML (used to always do this, now you have a choice).
  • Optional ETags.
  • Optional CORS Support
  • Optional JSON/XML/YAML Pretty-Print.
  • Option to output logs to physical file.
  • API
  • Global Preferences
  • Soft Delete of Servers
  • "Pretty" names for SSH tunneling (i.e. myapp.localtunnel.me)
  • SSH Tunneling Keepalive
  • Light Theme
  • Dark Theme
  • System Tray Support
  • "Run in Background" Mode
  • Drag 'n' Drop Server Creation (App & System Tray)
  • Installer (macOS pkg, Windows NSIS)
  • New Responsive File Browser.
  • Autodeployment (w/ badge service via author.io)

There have been several requests for things like gzip compression, ETags, etc. These features don't typically make sense for the simplest form of local development, but modern UI development "done right" requires a little more emphasis on networking/transmission. These features become very useful when testing and troubleshooting, so we've made it possible to turn them on/off for each server. We're also extending the Fenix API to manage these things programmatically, and we anticipate releasing a gulp/grunt plugin to help automate local testing workflows.

PRO Edition

  • Log Filtering
  • Advanced Live Reload
  • Custom Response Headers.
  • Multiple server root directories.
  • Realtime connection monitoring & statistics
  • SSL Support (Fenix CA)
  • Fenix Certificate Authority
    • Windows Trustchain Management
    • OSX Trustchain Management
    • Firefox Trustchain Management
    • Automatic NIC Management & Synchronization

Due to the unique and complex nature of some of these features, we are moving them into a separate project. They will likely resurface in 3.1.x or 3.2.x edition (possibly for free).

The request browser will be released as it's own separate app, so it won't be in Fenix 3.0.0. I always felt it was a useful tool, and survey results agree... but it also doesn't fit in as well with the original scope of Fenix. Moving it to it's own project will help it get the attention it needs to be truly awesome.

Finally, we're going "open core". Most of the features above will be free, but more advanced features are slated for a commercial release. As much has we'd like to make this free, devlopment has already grown into a full time effort.


Fenix 2.0 (OLD EDITION)

Main App:

Fenix

Webhook Browser

Fenix Webhooks

The wiki has additional information about how Fenix works, how to hack on it, and how to use it on other platforms. The release history has older versions and a changelog.

Known Issues

Like Fenix?

Making a donation will go towards the development of Fenix. At the moment, I'd love to reach a simple goal of $100 in annual contributions so I can obtain an Apple Developer license for Fenix... which is the only application I'm distributing on Mac. This would help prevent the "Cannot install from unidentified developer" annoyance some OSX Mavericks users experience. Other contributions would go towards future efforts like hosting a public SSH tunnel (to take some load off localtunnel.me) and new feature development.

Support OSS Development via Stripe or Become a Patron

GPL License

Fenix 2.0 is available under the GPL license.

fenix's People

Contributors

coreybutler avatar gitter-badger avatar ianmacl avatar tcyrus avatar tombyrer avatar xqwzts avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fenix's Issues

Log Viewing Improvements

It would be good if the log viewer could be opened wider. Even better, being able to save the log to a file or copy from it would help tremendously.

fenix crashes when starting a server

For some reason some directories cause trouble for fenix.
While creating a server seems to work fine all the time, starting a server reproducible fails for some directories (like the OpenUI5 SDK for example).

This leads to a complete freeze of fenix. After killing the process one has to delete the servers.fnx (or at least change every servers "running"-value to false) in order to be able to start fenix again because otherwise it would freeze on launch (not finishing the animation at all).

As mentioned it seems pretty random what directories fail, but it seems to be 100% reproducible. If it kills fenix once, It'll kill him everytime. If it works once, I may very well work everytime.

(Should I create a seperate issue for the 'fenix doesn't start if the config has running:true values' ?)

Disable animations in app

The animations is the app are very annoying after the first few clicks. Please kill em or give us an option to disable them.

SSI Support

When are you going to add SSI support? I learned that there's an npm module for SSI support on nodejs, when are you going to integrate this on Fenix?

Production vs Development

Corey, you mentioned this is not meant for production? Why?

I can see the use case for testing out your web(app|site) alright. But perhaps further development can be done to get it ready for large-scale public facing websites?

Full Screen Loses Windows

Demonstration:

  • Launch the Fenix app
  • Click the Full Screen shortcut. All is good.
  • Cmd-Tab to another app
  • Cmd-Tab back to Fenix
  • Fenix shows no open windows.

To recover, I have to try the Window->Fenix Web Servers option at least once, sometimes twice.

What Should Happen

  • When switching back to Fenix, the last active window should be viewable.

Platform : Mac OS X 10.9.3
Fenix : 2.0.0

Allow for Replay in Service Browser

One cool thing that ngrok does is let you "Replay" a request. This is useful for when you are testing a remote service and don't want to keep asking it to ping you.

database connect string

Hi there, Is the fenix web server able for a web application with database. If so, how i manage to do this? thanks

Remember the last window size & position

It's a bit troublesome right now every time i re-open my fenix servers, i need to resize the window and move it. i always need to see the logs, so without resizing the window, it's all jammed in a small window, it's very hard to see. Hopefully fenix can remember the last resized size as well as the window position.

Fenix CLI bin app isn't available

I just installed the server app and the command line option in my Mac. The server works great, but I'm more interested in being able to start servers via the CLI, and have them stored for later use. Problem is that the fenix command isn't available as expected. The install process goes just fine:

☀  node_modules [master] npm install -g fenix
npm WARN engine [email protected]: wanted: {"node":"0.10.x","npm":"1.2.x"} (current: {"node":"0.10.29","npm":"1.5.0-alpha-1"})

> [email protected] install /usr/local/lib/node_modules/fenix/node_modules/configure
> node install.js

/
> [email protected] install /usr/local/lib/node_modules/fenix/node_modules/mongodb/node_modules/kerberos
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/kerberos/lib/kerberos.o
  CXX(target) Release/obj.target/kerberos/lib/worker.o
  CC(target) Release/obj.target/kerberos/lib/kerberosgss.o
  CC(target) Release/obj.target/kerberos/lib/base64.o
  CXX(target) Release/obj.target/kerberos/lib/kerberos_context.o
  SOLINK_MODULE(target) Release/kerberos.node
  SOLINK_MODULE(target) Release/kerberos.node: Finished

> [email protected] install /usr/local/lib/node_modules/fenix/node_modules/mongodb/node_modules/bson
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bson/ext/bson.o
  SOLINK_MODULE(target) Release/bson.node
  SOLINK_MODULE(target) Release/bson.node: Finished

> [email protected] install /usr/local/lib/node_modules/fenix/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)

  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  SOLINK_MODULE(target) Release/bufferutil.node
  SOLINK_MODULE(target) Release/bufferutil.node: Finished
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/validation.node
  SOLINK_MODULE(target) Release/validation.node: Finished
[email protected] /usr/local/lib/node_modules/fenix
├── [email protected]
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected], [email protected])
├── [email protected] ([email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected])
├── [email protected] ([email protected])
├── [email protected] ([email protected], [email protected])
└── [email protected] ([email protected], [email protected], [email protected], [email protected])

But when I try to use the fenix command, even after opening a new terminal window, I get:

$ node_modules [master] which fenix
fenix not found
$ node_modules [master] fenix list
zsh: command not found: fenix

Fenix does show up in the correct location:

# /usr/local/lib/node_modules/node_modules 
$ ls -h
bower         eb-styleguide fenix         grunt-cli     npm

I would just create a symlink myself and be done with it, but I'm not sure which file in the /bin directory to link to:

$ tree fenix/bin
fenix/bin
├── auth
│   └── googleJWT.js
├── auth.js
├── core.js
├── database
│   ├── mongodb-engine.js
│   └── mysql-engine.js
├── database.js
├── routes.js
├── server.js
├── socket.js
└── utilities.js

Here's my current $PATH settings as well:

/usr/local:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Any ideas?

CRUD Support in Future?

Hey,
You have built a great application, testing static site is a breeze.
Are you planning on adding capability to Fenix web server to able to handle CRUD operations on JSON objects? This would help to prototype how the web application would work with a database.
If not, are you planning on creating a web server that does?

Support/host node.js apps

Would be really nice if Fenix supported hosting node.js based apps. For example, if/when I configured a new server, it could introspect the selected directory to see if it contains a package.json file, and inspect it for certain attributes, like either main or a start script definition or something like that. Nice thing would be that Fenix could be used for spinning up the app for development...and then, say if you're building a full-stack JS app on Express or something like that, I could use the Request Browser for introspecting requests and responses from the apps UI to a support API, like, requests to /api/.... Would be really nice for something like that.

Stuck at configuration after install

I see the spinner, stays for a few minutes with no progress bar or knowledge of what is going on.
Please ping when you have the fixes released in the instal version.

button enable public view not functional / request browser time out

windows 7 pro; behind company firewall/proxy

no reaction on button, i.e.connection to localhost.me does not start at all.

request browser connects to localhost with ie, not with firefox, in both cases status bar stays yellow with error message "remote server timed out"

maybe a problem with proxy settings, same installation at home without any problems.
please provide enhanced error handling/msg

Feature request: Simple git server

Praise:
Hey there! Just ran across fenix and have to say that this is pretty awesome so far. Been looking for something like this for quite a while to automate my nodejs http server processes. Currently running anywhere between 20 to 30 projects for my various team's project workflow.

Request:
I know that fenix is primarily open source and that our team could add this feature ourselves, but I'd much prefer the authors of fenix to add it that way others can benefit from it too (if approved, that is). It already seems you have a lot of features geared primarily towards development, like the current list of resources for example. This feature would be sort of an extension of that.

Right now there is another open source project called deploy which is a minimal git server. Adding another optional toggle switch to enable a local git server, with the added benefit of being forward proxied by SSH tunneling too, would be wicked awesome.

That project can be found here: https://github.com/dominictarr/deploy

I think this would speed up development times during collaboration and offer an extreme advantage for fast prototyping between teammates, that web technologies are moving toward. The additional benefit would be to have the ability to remotely work on your websites from another machine, the only prerequisite being a git client.

Works on my laptop not on my Mac Mini

I installed Fenix on two Macs, on my laptop, the other a Mac Mini. I start up a server on both from exact same directory (an external disk that actually sits on Mac Mini and is mounted remotely on my Laptop).

Fenix works like a charm on my laptop. On my mac mini I get a blank screen and when I click on link it says "Safari can't open page because server unexpectedly dropped the connection". All it says in log after I start server: "Screenshot captured." If I knew where that screenshot was I'd drag it here.

The problem is same with firewall on or off, although since it's still internal figured firewall irrelevant.

Obviously I refer this on my Mac Mini so I can share externally.

What am I doing wrong?

PS great tool!

video volume is too low

Your videos are like -18db too low. Maxed out volume in YouTube & desktop & it was sill quieter than a whisper.

If you've used a 'normalize' function in your editor, then you may have a few stray peaks you can hand-edit down then normalize. Better yet, use a compressor so you still have about 9db of 'dynamic range' & peak out ~-1db.

(In a past programming life I wrote dynamics processors in assembly ;)

TIA

Windows installer needs to choose install folder

For stability & security reasons, I have a specific Drive I put all my servers. If I had my SSD installed, I definitely would not want anything installed on C: with out my permission.
Can you please allow the choice of install folder please?

Mac OSX Installer

I finally have a copy of Mavericks to work with, but there are a couple of node-webkit issues being worked around at the moment. I've got a partially working version at the moment and will hopefully have everything wrapped up within a few days.

parent directory show

I don't understand how it works. I created my folder with my website include but I just see the marent directory in my browser. What I forgot ?

npm -g install fenix doesn't create a bin

I followed the instructions from the web site, didn't get a cli tool.
Looks like the version in npm (0.1.1) is not the same as the one in github.

I believe you need a bin section in the package.json, such as

...
 "bin": {
    "fenix": "./bin/fenix.js"
  }
...

and at the top of the file bin points to:

#!/usr/bin/env node

Great looking public site btw. I thought this was going to be something I had to pay for.

Not loading after crash

I edit one of server records (just change path).
After that fenix app totaly hangs.
When i try to restart it hangs on splash screen.
Do i need reinstall fenix?

make the "descriptive name" default to the name of the folder

A lot of the time (actually all the times I've used it so far) the server name has just been the name of the folder that I started the server in. So it would be really cool if the name defaulted to the name of the folder. Or maybe just make the name optional and when it's not there have the UI just show the path to the folder that's being served...

Thoughts?

Access Violation at Address 00408CC7 in module 'fenixsetup.tmp'

I got the notice/error below when attempting to install lil Fenix in Windows 7 64x. I was not unable to install but I am so looking forward to it! I as "this" close to writting my own little Fenix!


Setup

X Access Violation at Address 00408CC7 in module 'fenixsetup.tmp'. Read of address 00000000

                            - OK - 

Could it be I am missing a dependency that your software did not dectect?

Security Req.

A (public facing) Windows server brings with it latent security issues. We might need to warn admins of the potential security holes in Windows. Their box might need to hardened. A handy guide exists here:

http://hardenwindows7forsecurity.com/index.html

Whilst I appreciate Windows has come along leaps and bounds over the years in terms of security; it still helps if users are educated on basic security issues. Too many machines can be owned with simple point-and-click exploits. And having an AV / Firewall / Latest Windows-update is usually not good enough.

The same goes for OSX and even Linux. It's rare to have Windows machines public facing, unless there's one of those UPNP devices hooked up for remote access. (Even if this is the case - the box is rarely hardened)

Since we're dealing with servers here, it will be likely people are going to run their startup / thing with this.

Perhaps drop the link somewhere in the Docs/FAQ?

request browser vs logs

I tried out fenix for the first time today (actually like 10 minutes ago) and found it very odd that the "request browser" isn't the same thing as the "view server logs" feature. From a user's perspective, they both accomplish the same goal: viewing requests. The logs just seem to be a much uglier and less powerful way of doing this (compared to the sleek and awesome request viewer). Have you considered replacing the "view server logs" button with something that opens the request browser?

Also, I don't understand why the request browser opens on a separate port. Can't that just log traffic coming from the port that I set the server to use, rather than 56789?

Linux Binary ?

I tried this in my Ubuntu machine . Its perfectly working .

Crash

After Installation
Image

After Run program

Image

Os: Window 7

Request Browser URL not working

First off - I assume the purpose of "Accepting requests at ..." for the Request Browser is to allow remote access to the request browser for the server?

Secondly - it doesn't work. I hit the URL and just get OK

A long folder path displays poorly

See the path int he top server. It breaks at the space, which is ok I guess, but there isn't enough vertical space to display it properly.

image

support for pushstate domains

Would love the ability to set a default file (perhaps default to index.html) for 404 requests. Would make single page webapp testing easier. Right now I use a quick sinatra app for serving my apps that require pushstate support.

Who is using Fenix?

I've been getting some questions (offline) about who is using Fenix. I'll use this space to compile an initial list of companies using Fenix. If you'd like your company to be included, please leave a note here, and if you'd like some free marketing, provide a logo and link. If you want to mention how you're using it... well that's awesome too.

Obviously I'm using it within my companies, so to get things started....

Ecor Ventures
Ecor Ventures

We're using Fenix to prototype and test interfaces for the SaaS services we develop. We're using the request browser to inspect webhooks we create, as well as those from outside services.


ThinkFirst
ThinkFirst

We're using Fenix to show variations of sites to clients. We iterate in real time by sharing links over Hipchat.

504 Bad Gateway When Going Public

When attempting to activate the public view of my site the sever hangs and eventually returns a 504 bad gateway

screen shot 2014-06-10 at 12 01 23 pm
screen shot 2014-06-10 at 12 01 29 pm

Fenix v2.0

Mac OSX 10.9.3

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.