cachethq / cachet Goto Github PK
View Code? Open in Web Editor NEW๐ฆ The open-source status page system.
Home Page: https://cachethq.io
License: MIT License
๐ฆ The open-source status page system.
Home Page: https://cachethq.io
License: MIT License
Heroku deployment will break when there is a composer.json
and package.json
as the buildstep favours Node.js deployment over PHP.
I know that there are ways to change the buildpack when creating an app, but we need to investigate whether this is possible from within app.json
.
We'll probably want to get in touch with @heroku themselves on this.
We'll need an email template setting up for notifications and team member invitations later on. Any template we use should:
http://status.[mydomain].com/css/application.css Failed to load resource: the server responded with a status of 404 (Not Found)
There's no application.css in any folder. I followed the installation instructions on a VPS. The dashboard styling seems to work just fine, but the main page is completely unstyled.
Hey,
I would've liked this app to use PostgreSQL instead of MySQL as then I don't need to give my payment information to Heroku in order to deploy this. Heroku seem to want payment info if you use an addon.
Is it possible to change the deployment to using Heroku's PostgreSQL so that it can be deployed without the need for payment information?
Something that I've not really considered yet is caching of results. Every page refresh hits the database, so we should cache results, if only for a minute.
I've had an idea for a new kind of status page layout. What if we used a timeline design? We could still list each day, but under it would be a timeline view, with each icon being the status:
@HipsterBrown what do you think?
The setup page contains static text for:
All of these need moving into the app/lang/en/cachet.php
language file.
Cachet needs a design which:
I'd be forever grateful if somebody wanted to give this a go? I'm not much of a designer myself.
For those who are interested in creating a design, I love how Astral looks and feels. That kind of layout and feel would suit Cachet IMHO.
jamesbrooks@jbrooksuk Cachet (master) $ php artisan tinker
$[1] > $incident = new Incident;
// object(Incident)(
// 'incrementing' => true,
// 'timestamps' => true,
// 'exists' => false
// )
[2] > $incident->name = "Test";
// 'Test'
[3] > $incident->message = "This is a test incident. Something went wrong.";
// 'This is a test incident. Something went wrong.'
[4] > $incident->save();
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failed: incidents.status' in /Users/jamesbrooks/Sites/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php:369
Stack trace:
#0 /Users/jamesbrooks/Sites/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(369): PDOStatement->execute(Array)
#1 /Users/jamesbrooks/Sites/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(617): Illuminate\Database\Connection->Illuminate\Database\{closure}(Object(Illuminate\Database\SQLiteConnection), 'insert into "in...', Array)
#2 /Users/jamesbrooks/Sites/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(581): Illuminate\Database\Connection->runQueryCallback('insert into "in...', Array, Object(Closure))
#3 /Users/jamesbrooks/Sites/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php(370): Illuminate\Database\Connection->run('insert into "in...', Array, Object(Closure)) in /Users/jamesbrooks/Sites/Cachet/vendor/laravel/framework/src/Illuminate/Database/Connection.php on line 625
[5] > exit;
I rarely use SQLite, so it's probably an obvious error.
When installing from Heroku, it'd be good to have some kind of setup page which:
app_name
, app_url
, show_support
settings.Since Cachet is being developed to be deployed live (straight from master
) it should at least go through some tests.
I'm not too worried about 100% coverage straightaway. We can spend time writing tests later on.
Illuminate \ Database \ Eloquent \ MassAssignmentException
username
I think that username
needs to be added to $fillable
.
The First Release milestone is coming up (due 22nd December). If you're new to Cachet or unsure of what work needs to be done towards getting this first release out, here is a rundown of what needs to be done.
Essentially this is all that is needed for a first release. We'll be able to refine and add more features later on.
Once Cachet has been setup, the route should no longer be accessible.
WIll we be upgrading to guzzle 5 any time soon? The upgrade should be quite easy.
I would like to set up the design contribution workflow with a living styleguide, i.e. Pattern Lab, with easily reusable components for use and reference in the project. I have seen several workflows that use grunt, gulp, or some other front-end build tool to dynamically build the guide. I would like to make it as simple as possible to setup, run, and contribute changes. If you have seen any good solutions, please comment below.
This guide could live in a Design branch to separate contribution concerns, thoughts on this are also welcome.
Once Cachet is setup, I think that we could display "steps to launch" in the dashboard index, it'll basically walk them through the things they've left to do:
Then a button to hide the steps.
By adding this kind of feature we're showing the user how to use Cachet in a non-invasive way.
I'm thinking of something like this:
What do we think about adding a separate status level for "scheduled". I'm not 100% sure on this since we could also add a date box on the incident page which can be set in the future. The status page will then detect future dates and list them appropriately as scheduled.
Displaying graphs of incidents per day could be useful for the more visually-inclined. Chart.js is super easy to use and produces sweet charts.
To keep sensitive data out of the application/repository, use .env
files where possible.
Being able to subscribe to the status page would be a neat feature. Every time a component/incident is added the subscribers would get an email.
The redirection to setup results with:
Whoops, looks like something went wrong.
Not particularly useful.
Interestingly setup works locally, so it must be something specific to the Heroku environment.
What are some of the best resources out there for introducing someone to a version control workflow and getting setup with GitHub?
I will be compiling resources together for the contribution doc to make getting started with the project much simpler for those looking to help out on their first OSS project.
StatusPage.io allows you to upload a banner that can be displayed on the status page itself. Cachet could also offer this feature, however one problem is in my mind.
How do we upload files on to Heroku which is temporary storage until the next push?
There needs to be a way to add components and incidents to the database, as manually entering them does not provide an easy integration. A decent management panel for Cachet should include:
Hi,
when I try the deploy to heroku button, it detects an nodejs env and not a php env. So the build failed
-----> Node.js app detected
-----> Resetting git environment
/app/tmp/buildpacks/nodejs/bin/compile: line 35: [: ==: unary operator expected
-----> Defaulting to latest stable node: 0.10.33
-----> Downloading and installing node
-----> Exporting config vars to environment
-----> Installing dependencies
npm ERR! install Couldn't read dependencies
npm ERR! Failed to parse json
npm ERR! Unexpected end of input
npm ERR! File: /tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/package.json
npm ERR! Failed to parse package.json data.
npm ERR! package.json must be actual JSON, not just JavaScript.
npm ERR!
npm ERR! This is not a bug in npm.
npm ERR! Tell the package author to fix their package.json file. JSON.parse
npm ERR! System Linux 3.8.11-ec2
npm ERR! command "/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/vendor/node/bin/node" "/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/vendor/node/bin/npm" "install" "--userconfig" "/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/.npmrc" "--production"
npm ERR! cwd /tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.4.28
npm ERR! file /tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/package.json
npm ERR! code EJSONPARSE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/npm-debug.log
npm ERR! not ok code 0
0 info it worked if it ends with ok
1 verbose cli [ '/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/vendor/node/bin/node',
1 verbose cli '/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/vendor/node/bin/npm',
1 verbose cli 'install',
1 verbose cli '--userconfig',
1 verbose cli '/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/.npmrc',
1 verbose cli '--production' ]
2 info using [email protected]
3 info using [email protected]
4 verbose config Skipping project config: /tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/.npmrc. (matches userconfig)
5 error install Couldn't read dependencies
6 error Failed to parse json
6 error Unexpected end of input
7 error File: /tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/package.json
8 error Failed to parse package.json data.
8 error package.json must be actual JSON, not just JavaScript.
8 error
8 error This is not a bug in npm.
8 error Tell the package author to fix their package.json file. JSON.parse
9 error System Linux 3.8.11-ec2
10 error command "/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/vendor/node/bin/node" "/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/vendor/node/bin/npm" "install" "--userconfig" "/tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/.npmrc" "--production"
11 error cwd /tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4
12 error node -v v0.10.33
13 error npm -v 1.4.28
14 error file /tmp/build_c2546f7b9a12ec1693fab778226c6033/cachethq-Cachet-1144df4/package.json
15 error code EJSONPARSE
16 verbose exit [ 1, true ]
! Push rejected, failed to compile Node.js app
Rather than the current setup page, we may be better off with a "wizard" style setup. Again using the same inspiration, this is what I have in mind:
Pros to a wizard:
Cons:
If needed i could help design the HTML/CSS markup. Not much of a dev but i can design. Astral isn't responsive, would you want it to be? Because there are more possibilities in designing PC only (with mobile support).
When changing the background colour, it's no longer being saved.
I'm wondering whether it'd be worth adding some kind of internal tracking that gets sent to directly back to us, to see how often something happens.
We'd only need to track:
Then we'd have enough data to use as "we've had x installs" etc.
Of course, there are things like:
That we'd need to take care of.
It would be awesome to have the one click deploy to Heroku button added to the project!
https://blog.heroku.com/archives/2014/8/7/heroku-button
It looks pretty simple to implement and would surely increase the number of users that give it a shot! Heroku provides a free tier so it lowers the barrier to entry to almost nil...
Is useful get the events with RSS. I'm on my last week on college, soon I'll reach you with pull requests :)
We need some way of updating Cachet from an existing installation. This will keep Heroku users up to date and make it easier for manual installations to stay up to date too.
./app/storage/updates
composer update
dev-master
style updates that will use the master
branch, with a big warning.An API should be able to:
Currently the CSS are being loaded from public/build/css
, so the fonts for Bootstrap and FontAwesome need to be within public/build/fonts
.
Currently I'm using the copy
command:
.copy('app/assets/bower_components/bootstrap/dist/fonts/', 'public/build/fonts')
.copy('app/assets/bower_components/fontawesome/fonts/', 'public/build/fonts');
This works, however it throws an error if it is run when the fonts are already there, and seems to remove them... which sucks.
There is a publish command, however that doesn't work with gulp watch
. Really not sure what to do.
Currently while watching
, I don't see the icons, but before pushing I have to run gulp
, to copy them in.
EDIT:
Error: ENOENT, open '/Users/elliothesp/Documents/Code/Cachet/application/public/build/fonts/glyphicons-halflings-regular.eot'
This error occurs when running gulp, and the fonts are already there.
At the moment the human statuses are hard set, but it may be better if they were customizable. The reason for this is that the Status Page may want to be setup to be more friendlier for internal use perhaps, so things like "Partial Outage" don't make sense.
This would need some thought because obviously the UI would be built around the options, we'd run out of icons and colors too.
If we decide not to do this, then the statuses would need setting up as a language file.
For security we could allow the API to only be accessed from certain domains. This could simply be a textarea
which you write domains on a new line and restricts requests based on the Origin
and Referer
headers.
Leaving it empty would open the API to anyone (with authentication).
A way of adding/sending and displaying metrics would be cool. For example, you could send a metric to Cachet showing how many requests are being made each second, or latency etc. This relies on #4.
So far it looks like an interesting project. I would like to implement it into my app but I haven't find a way on how to use this. Since I have no background in laravel, I can't operate this app. Any further documentation? Thanks (:
Design inspiration for reference while creating elements and layouts for Cachet.
i.e. Astral, nice color scheme and layout
You should implement a environment detection or doc it if already exist.
Creating an organisation on Github (cachet) and having repositories would make things easier to manage and contribute.
Examples:
You get the idea... I know @jbrooksuk it'd pull the project away from being 'yours' but in hind site this would turn out to be a huge project and having one repository would be messy.
Implement jquery-minicolors into the theme settings will make it easier for the user to customise the theme with no hex colour experience.
Changed the database.php file to have the following entry:
'default' => 'sqlite',
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => '/var/hosting/-redacted-/sfdstatus.db',
'prefix' => '',
],
],
Create a new sqlite3 database (sqlite3 /var/hosting/-redacted-/sfdstatus.db ""
) and then ran:
# php composer.phar install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
Generating optimized class loader
Migration table created successfully.
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1 near "CHANGE": syntax error (SQL: ALTER TABLE `incidents` CHANGE `component` `component_id` TINYINT(4) NOT NULL DEFAULT '1')
[PDOException]
SQLSTATE[HY000]: General error: 1 near "CHANGE": syntax error
migrate [--bench[="..."]] [--database[="..."]] [--force] [--path[="..."]] [--package[="..."]] [--pretend] [--seed]
Script php artisan migrate handling the post-install-cmd event returned with an error
[RuntimeException]
Error Output:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1 near "CHANGE": syntax error (SQL: ALTER TABLE `incidents` CHANGE `component` `component_id` TINYINT(4) NOT NULL DEFAULT '1')
[PDOException]
SQLSTATE[HY000]: General error: 1 near "CHANGE": syntax error
migrate [--bench[="..."]] [--database[="..."]] [--force] [--path[="..."]] [--package[="..."]] [--pretend] [--seed]
install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [--ignore-platform-reqs] [packages1] ... [packagesN]
#
For the sake of getting V1 out and not having to write much JavaScript I want to separate what would be the "tabs" in each section into sub-pages.
This means that where we currently have:
We'd now have:
Or whatever.
The problem I encountered with tabs (without AJAX) is that the page redirects to the wrong tab. There are hacks for this, sure, but it's not very nice.
We need some documentation being written:
Would be nice if we can receive a status from HipChat or w/e.
DashboardController
is doing a lot of work and has several methods to it, for the different dashboard pages.
Let's make use of Route::controller
and get ready made controller code made for us, for each page. We'd end up with a lot of controllers:
DashIncidentsController
DashComponentsController
DashMetricsController
DashNotificationsController
DashSettingsController
Thoughts?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.