Founder at 406 Digital

Montana, USA

Hire Me

Member Since 4 Years Ago

Experience Points 48,240
Lessons Completed 142
Best Reply Awards 25
Best Answer
  • Start Your Engines Achievement

    Start Your Engines

    Earned once you have completed your first Laracasts lesson.

  • First Thousand Achievement

    First Thousand

    Earned once you have earned your first 1000 experience points.

  • One Year Member Achievement

    One Year Member

    Earned when you have been with Laracasts for 1 year.

  • Two Year Member Achievement

    Two Year Member

    Earned when you have been with Laracasts for 2 years.

  • Three Year Member Achievement

    Three Year Member

    Earned when you have been with Laracasts for 3 years.

  • Four Year Member Achievement

    Four Year Member

    Earned when you have been with Laracasts for 4 years.

  • Five Year Member Achievement

    Five Year Member

    Earned when you have been with Laracasts for 5 years.

  • School In Session Achievement

    School In Session

    Earned when at least one Laracasts series has been fully completed.

  • Welcome To The Community Achievement

    Welcome To The Community

    Earned after your first post on the Laracasts forum.

  • Full Time Learner Achievement

    Full Time Learner

    Earned once 100 Laracasts lessons have been completed.

  • Pay It Forward Achievement

    Pay It Forward

    Earned once you receive your first "Best Reply" award on the Laracasts forum.

  • Subscriber Achievement


    Earned if you are a paying Laracasts subscriber.

  • Lifer Achievement


    Earned if you have a lifetime subscription to Laracasts.

  • Laracasts Evangelist Achievement

    Laracasts Evangelist

    Earned if you share a link to Laracasts on social media. Please email [email protected] with your username and post URL to be awarded this badge.

  • Chatty Cathy Achievement

    Chatty Cathy

    Earned once you have achieved 500 forum replies.

  • Laracasts Veteran Achievement

    Laracasts Veteran

    Earned once your experience points passes 100,000.

  • Ten Thousand Strong Achievement

    Ten Thousand Strong

    Earned once your experience points hits 10,000.

  • Laracasts Master Achievement

    Laracasts Master

    Earned once 1000 Laracasts lessons have been completed.

  • Laracasts Tutor Achievement

    Laracasts Tutor

    Earned once your "Best Reply" award count is 100 or more.

  • Laracasts Sensei Achievement

    Laracasts Sensei

    Earned once your experience points passes 1 million.

  • Top 50 Achievement

    Top 50

    Earned once your experience points ranks in the top 50 of all Laracasts users.

10 Nov
1 month ago

austenc left a reply on Installing PHP 7.2 Extensions On Mac?

Usually those will come with PHP 7.2 by default when installed via Homebrew. What is the output of php -v and php -m? Also your valet version valet --version?

This might seem silly, but have you tried restarting your machine? I recall having problems with nginx recognizing the new PHP version when I upgraded.

austenc left a reply on Update Approved Not Working

At first glance your controller's update method seems okay, but two questions come to mind:

  • what is the persistent method?
  • have you checked the laravel.log file to see if any errors are happening?
21 Feb
9 months ago

austenc left a reply on How To Create A Incremental Array To Make A Bulk Insert

Maybe you were trying to do it as an array like this?

$array_line[$column_count] = [$field_names[$column_count] => $column];

austenc left a reply on 'Extending' Database Tables?

One strategy you could consider would be an uploads table with a couple polymorphic fields like so:

 - id
 - attachable_id
 - attachable_type

This way you could have separate tables/models for any type of upload you need. Another approach might be to use the json mysql field type to store that type of extra information as a json string.

austenc left a reply on Custom Order Of Collection

@Snapey is that how it works? Have run into trouble with merge doing that in some cases but couldn't remember, thanks for the clarification!

austenc left a reply on CRUDBooster

The pic table doesn't exist in your database. Do you need to run php artisan migrate?

austenc left a reply on Custom Order Of Collection

Firstly, I'd recommend against using merge in this case. What happens if you have a post and a photo that both have an ID of 1? One will get left out (try it!).

I'd recommend using a combination of concat() and sortBy with a callback method:

$posts->concat($pages)->concat($photos)->sortBy(function ($model) {
    return class_basename($model);

austenc left a reply on Realtionships That Require An Authenticated User

So what happens if no user is logged in, do you want all products' notes?

If you're not worried about that, this should get you what you want:

    $query = $this->hasOne(Notes::class, 'product_id', 'product_id');

    if (auth()->check()) {
        $query->where('userID', auth()->id());

    return $query;

austenc left a reply on Laravel 5.5 Looking For Table Named "software" Instead Of Expected "softwares"

@madsem Great question! One option might be using the artisan tinker command and then using str_plural('example') as I believe that's what Laravel uses internally to get these table names. str_plural should work for you! Beyond that... most words should be simply an s or ies in English

austenc left a reply on Strange Insert Error..Integrity Constraint Violation

It's hard to tell from your example, but it looks like you're using fill and not calling save() afterwards. I would recommend using either create() or update()instead!

Additionally, you shouldn't need separate arrays. Combining those two ideas would give something like:

    'from' => auth()->user()->id,
    'to_' => $id

austenc left a reply on Laravel 5.5 Looking For Table Named "software" Instead Of Expected "softwares"

Hi there @madsem! Laravel is actually doing the correct thing here because the word "software" is what is known as an uncountable noun -- aka it has no plural form.

So as far as Laravel is concerned, software is the plural form. That's what I'd recommend using for your table name. Cheers!

austenc left a reply on Merging A Collection Of Two Models?

I think what you want here is concat(), it can be used like this:


Should give you four random items from the resulting collection.

austenc left a reply on Saving Checkboxes To Seperate Db Row

Hi there! Array-based checkbox fields can be a bit of a struggle sometimes because of most browsers' default behavior. If a box isn't checked, the browser won't even send that index in the next request.

Anyway, there are two common strategies you'll see:

  • Giving the checkbox fields each a unique key like <input type="checkbox" name="dogs[0]" /> (in this case 0 would be something unique to each one like a dog ID or something
  • Giving checkbox fields a value like <input type="checkbox" name="dogs[]" value="0" /> (again,0` would be your dog ID or whatever here)

austenc left a reply on Broadcasting Auth With Custom Auth Guard

This always returns false What are you referring to here exactly? The boot method or the middleware or...?

Why do you have nested namespaces with your initial route groups? I see that you've got an outer namespace of App\Http\Controllers and another namespace inside that called Dashboard, is that part of the problem?

austenc left a reply on How To Exclude Js File When Call To Certain Blade From Public Vendor?

What I would recommend here is to use Blade Stacks -- this way you can apply additional js directly from the views that need it.

An example might be like this:

// your-view.blade.php
    <script src="/example.js"></script>

// your-layout.blade.php

austenc left a reply on How To Install Laravel App In Subfolder Of Shared Host?

Honestly a PHP framework and shared hosting just don't jive well together. Using Digital Ocean or Vultr to provision your own VPS is a much better option. Good luck!

austenc left a reply on Insert Array Data With Optional Field

When you are doing $input['absent'][$key] and the student is present, the variable $input['absent'] will never be set in the request.

otherwise rest of the two(late & absent field) will be blank field.

I can't see your form, but if absent is blank in this case, the field will be null in the request.

04 Dec
1 year ago

austenc left a reply on Laravel With DropzoneJS 400 (Bad Request)

Have you tried disabling CSRF protection for your route temporarily in the VerifyCsrfToken middleware? That would at least rule out a token / CSRF issue.

24 Aug
1 year ago

austenc left a reply on Testing Refactor From 5.3 => 5.4

Thanks @MikeHopley, that's really helpful to know! Our app has been upgraded to 5.4, and since we're porting over a bunch of tests written in codeception originally, we figured we'd wait the extra week or two until we've upgraded to 5.5 to refactor any tests.

17 Jul
1 year ago

austenc started a new conversation Testing Refactor From 5.3 => 5.4

Hopefully someone can give a recommendation for what to do to improve my test suite?

This app runs on Laravel 5.3, although we are going to upgrade to 5.4 (and 5.5) in the near future. Currently the test suite is built with codeception, and features ~250 tests. Although this works, we would love to refactor it to use built-in Laravel testing. When following the 5.3 docs I see methods listed like visit and visitRoute, but I don't see those in the 5.4 docs (outside of dusk). Were the non-dusk versions of these methods removed in 5.4?

The initial plan was something like this:

refactor tests     =>     upgrade to 5.4     =>     upgrade to 5.5

With 5.5 coming soon, would my time be better spent just upgrading to 5.4 right now and seeing what 5.5 has, and then refactoring my tests after all of that? I don't want to write them all to be 5.3 compatible and then have to refactor each one just to upgrade to 5.4.

What would you recommend?

22 May
1 year ago

austenc left a reply on Homestead Laravel 5.4 Db:seed Segmentation Fault.

@summer4489 Did you ever figure this out? I upgraded my virtualbox and vagrant (and wiped out the box and re-did it) and also encountered this.

27 Nov
2 years ago

austenc left a reply on Vue 2 And Vue Tables - Can't Compile With Elixir?

You need to use and the gulpfile that is listed in the accepted answer by @prasinoulhs

I ended up just rolling my own custom solution however, so I'm not even utilizing vue tables now. Good luck!

22 Nov
2 years ago

austenc left a reply on Using Model Factories To Set Up Related Data And/or Pivot Tables?

That may work if I needed to create multiple records! I think the problem here is that this relation is polymorphic, so saving / inserting new records can be tricky. We have the inverse relationship (staff.user_id) in place to make it easier to reference the user attached to an object from the other direction (i.e., if you have a Staff object and you need to get the associated user)

21 Nov
2 years ago

austenc left a reply on Using Model Factories To Set Up Related Data And/or Pivot Tables?

The thing is, there always seems to be another foreign key ID that I need -- if I do it that way, I still need to set the staff.user_id field, and it seems like I just need to do that manually?

Here's my user factory:

$factory->define(\User::class, function (Faker\Generator $faker) {
    $staff = factory(\Staff::class)->create();

    return [
        'userable_type' => \Staff::class,
        'userable_id' => $staff->id,
        'username' => str_replace('.', '', $faker->username),
        'email' => $faker->safeEmail,


    // still need to set staff.user_id to the user this factory will create here?

austenc left a reply on Using Model Factories To Set Up Related Data And/or Pivot Tables?

@Tirke Thanks for your reply! I'm definitely getting closer.

I've got this as my Staff model factory now:

$factory->define(\Staff::class, function (Faker\Generator $faker) {
    return [
        'user_id' => factory(\User::class)->create([
            'userable_type' => \Staff::class
        'first' => $faker->firstname,
        'last'  => $faker->lastname

Here's the problem -- it still needs to set the users.userable_id field to ID that gets generated when the factory is used -- is there a clean way to do that?

austenc started a new conversation Using Model Factories To Set Up Related Data And/or Pivot Tables?

I want to seed some data for both users and staff tables using model factories. I've created a model factory for both models and individually they work just fine. I'm having trouble finding an elegant way to set the foreign key values however. Is there a better way to do this? Seems like it should be fairly simple, maybe I'm missing something?

Here's my working version:

    $staff = factory(\Staff::class)->create();
    $user  = factory(\User::class)->create([
        'userable_id' => $staff->id,
        'userable_type' => \Staff::class
    $staff->user_id = $user->id;

Here's my rough table structure. I have a User model with a userable() method and polymorphic relation, pretty straightforward.

  - userable_id
  - userable_type

  - user_id

Although this works -- it seems like quite a bit of extra work to be doing this for each test. How could I better create records for testing?

19 Nov
2 years ago

austenc started a new conversation Model Factory Usage On Polymorphic Relation?

I've got a polymorphic relation setup (called userable) on my users model. This way the user record can be associated with any other type of record (such as Staff in my example below). The (rough) table schema is like so:

  - id
  - userable_id
  - userable_type


  - id
  - user_id

I have a model factory made for each of these models, but I'm having a hard time hooking up the relations when I use them. Since there's a foreign key on both tables, how should I go about hooking it up properly?

Here's what I thought I would try:

    $user = factory(\User::class)->create();
        'user_id' => $user->id

While this seems to hook up the relation properly, the staff.user_id field is still 0 after the save() call. Am I doing something funky here? I'd like to have this be as efficient as possible as I will need to set up users this way often for running tests. I see the examples in the documentation that use ->each() on the model factory, but how do people handle things like this for a single object / two-way relation? Thanks!

15 Nov
2 years ago

austenc left a reply on Gulp Watch On File From Mix.copy

I see what you're saying @ejdelmonico, but this seems more like a bug in elixir to me. Reading the "custom paths" part of the elixir documentation leads me to believe it should work either way? It works if you just do a single file, but specifying several as an array causes the watchers to be incorrectly registered.

austenc left a reply on Gulp Watch On File From Mix.copy

@ejdelmonico Could you provide an example of what you're talking about? A workaround is fine but I'm not quite sure what you mean. Thanks!

11 Nov
2 years ago

austenc started a new conversation Gulp Watch On File From Mix.copy

I am developing a package and have some .less assets that are copied to the root app's public/vendor/package files with mix.copy. Currently, gulp watch doesn't see these files as changing, so the "less" task is never run by gulp / elixir . Is there a workaround for this, or perhaps a better way to go about it?

Here's an example of my file structure:

- gulpfile.js
- core/resources/assets/less/*.less
- public/vendor/core/less/*.less

And here's excerpts from my gulpfile:

elixir(function(mix) {
    // Publish assets
    mix.copy('vendor/me/core/resources/assets', 'public/vendor/me/core')

        ], 'public/css/style.css')
29 Oct
2 years ago

austenc left a reply on Vue 2 And Vue Tables - Can't Compile With Elixir?

@prasinoulhs thanks for the help! I installed that via npm and added a .babelrc file with the proper contents, but the error persists, any ideas?

austenc left a reply on Vue 2 And Vue Tables - Can't Compile With Elixir?

Strange -- wouldn't the vue-tables package pull that in as a dependency if it needed it?

austenc left a reply on Vue 2 And Vue Tables - Can't Compile With Elixir?

Okay, so it appears my require statement should be in my app.js file, not the gulpfile, which makes sense. But now I'm getting this error and having a hard time finding the solution to it:

Module parse failed: ~/Code/myproject/node_modules/vue-tables-2/lib/template.jsx Unexpected token (15:7) You may need an appropriate loader to handle this file type.

austenc started a new conversation Vue 2 And Vue Tables - Can't Compile With Elixir?

I have a Laravel 5.1 app that I've been working on implementing a vue workflow into. I've updated the package.json references elixir and added webpack builds . I have the example vue component (that L5.3 provides) building with elixir / webpack in my app. The problem comes when I try to add Vue Tables 2 into the equation. Hopefully somebody might be able to point me in the right direction? I'm new to Vue and webpack, so maybe I'm missing a key step or putting something in the wrong place?

Adding the require('vue-tables-2') line in my gulpfile causes this error:

import VuePagination from 'vue-pagination-2'

SyntaxError: Unexpected reserved word

Here are some relevant file snippets:


    "laravel-elixir": "^6.0.0-11",
    "laravel-elixir-vue-2": "^0.2.0",
    "laravel-elixir-webpack-official": "^1.0.2",
    "lodash": "^4.16.2",
    "vue": "^2.0.1",
    "vue-resource": "^1.0.3",
    "vue-tables-2": "^0.2.15"


var gulp   = require('gulp');
const elixir = require('laravel-elixir');


var VueTables = require('vue-tables-2');  // adding this line causes the error

elixir(function(mix) {
        // Webpack Vue Components

01 Sep
2 years ago

austenc started a new conversation Run Artisan Command Via Gulp From Host Machine?

I'm using Laravel 5.1 and the homestead VM. I'd like to be able to run gulp test from my host machine and have it do something like:

cd ~/Homestead && vagrant ssh
cd Code/myproject
vendor/bin/codecept run functional

I've tried using gulp-run to accomplish this, but it's having trouble finding the ~/Homestead directory. Here's my code:

gulp.task('test', function() {
    return run('cd ~/Homestead && vagrant ssh').exec();

When I run gulp test I get The system cannot find the path specified. -- I am assuming this is because I'm on a windows host machine. Has anyone tried to do this before? Is there another way I could go about it? It would be really convenient for running tests / artisan commands and I was able to do it with grunt, but I'm having trouble getting it to work with gulp. Thanks!

29 Aug
2 years ago

austenc left a reply on Custom .env For Artisan

I believe it means you can specify the environment name, not an actual .env file. It should be something more like this:

php artisan --env="testing" db:seed

austenc left a reply on How To Load Package Dependencies

@alenn -- I was finally able to figure this out! Just wanted to follow up here in case it helps you and/or future readers. The reason you were getting the Class not found error is because the root composer.json (and /vendor folder) doesn't know about the package-specific packages/xyz/vendor folder. In L4, the workbench module used to look for nested workbench/your/package/vendor/autoload.php files and automatically include them. In L5 this doesn't happen, and I wasn't able to get it to work the same way even when I tried to re-implement that piece.

Anyway, the real solution here is to utilize composer's ability to define a local repository. This basically creates a symlink from /packages/xyz (or wherever your package repo is) to the root /vendor folder. **Note that on windows you need to select Run As Administrator before you start your terminal (and virtual machine -- assuming you're using vagrant / homestead here), otherwise the symlinks won't work. Then you'll add this to your composer.json file (I put my package in a /core directory):

    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.1.*",
        "austenc/core": "*@dev"


    "repositories": [
            "type": "path",
            "url": "./core"

This will make it behave as a composer-installed package, but because of the symlink, you'll be able to work on the package files in the /core directory without having to run any composer install / update commands! Now, as for dependencies defined in the package, you simply put them in your require section of your package's composer.json and then the $this->app->register('Dependency\Name\ServiceProvider') calls should work. If any of the above needs clarification, let me know!

25 Aug
2 years ago

austenc left a reply on How To Load Package Dependencies

@alenn -- did you ever find a workable solution for this?

To everyone else, sorry in advance for bumping this 3 month old thread... but it was both the most recent and most relevant. I have been searching for quite a while now and haven't yet found a 'good' solution to this problem. I understand that when the package is defined in an app's composer.json require section, composer will automatically autoload that package's dependencies... but what does everyone do while they are developing their packages? Here are some proposed solutions I've seen, but I'd love to hear how other people are doing this too!

  • Define the package as a local repository in your composer.json file -- this could work... but you'll have to composer update every time you want to reflect package changes. Seems cumbersome.
  • Add a require() statement that requires the package vendor/autoload.php file. Not really a solution because this won't exist when the package is actually installed via composer.
  • Drop in the package's git repo in the main app's vendor/myvendor/packagename folder. Seems pretty hacky and just wrong! Also don't want to replace development files if i do a composer update in the root app

How does everyone handle the "develop a package while using it in a 'root' laravel app" problem in L5?

07 Jul
2 years ago

austenc left a reply on Can Forge Still Deploy With PHP 5.6 And Not 7?

Sorry to resurrect an older thread, but @chriss39 did you find a solution or more information about this? I need to use php5 too, and the most recent info I can find about it is this post.

07 Mar
2 years ago

austenc started a new conversation Access View Variable In Outside Class

Hello, I'm trying to override the base Form class to add some additional functionality for disabling fields... I'm a bit stuck on how to access view variable(s) in my class since it's outside the scope of the view/controller lifecycle. Here's what I've got:

<?php namespace Acme;

class Form extends \Illuminate\Html\FormBuilder {
    // Checks if the session param for disabling fields has been set
    private function disableFields($options = array()) {
        if (\Session::has('disableFields') 
            && \Session::get('disableFields') === true 
            && (is_array($options) && ! in_array('disabled', $options)))
            return true;   

        return false;

And when I make the view in the controller I've got something like View::make('myview')->with(['disableFields' => true])

Now, sometimes the view var is set in the session, but sometimes (on a regular get request for instance), the view vars aren't in the session -- so I'll need to check both places in my if statement... but how would I go about accessing view variables in my class? Note this is Laravel 4.2, but all answers welcome!

15 Feb
2 years ago

austenc left a reply on Why Is Route::resource Causing White Screen?

Thanks @simondavies ! In my case, it was even more tricky, since some routes were coming from a package, and I wanted to override those. My final solution was to register the routes file like this in my package's service provider:

public function boot() 
        $this->app->booted(function()  {
            require __DIR__.'../../routes.php';

This causes the (package-level) routes to always be defined after the application-level routes, giving me the ability to override package routes as I had hoped.

austenc started a new conversation Why Is Route::resource Causing White Screen?

I've got a routes file with something like the following in it:

    // does not work
    Route::resource('students', 'StudentsController');
    Route::get('students/activate', function(){ dd('test123'); });

    // works 
    Route::get('students/activate', function(){ dd('test123'); });
    Route::resource('students', 'StudentsController');

When I try to access the /students/activate page with the first set of lines, I get a blank white screen and nothing comes up in the log file either. The second set of lines works fine -- so what is Route::resource doing here to cause this to happen? Is my only option to manually define the resource routes? Thanks!

11 Jan
2 years ago

austenc left a reply on Multiple Vagrant Boxes -- SSH Problem

@citricsquid you are indeed correct, but what I'm doing used to be in the original homestead docs and I've had no issues with it until now. In addition to my solution posted above, an even better solution is actually in the docs, I just missed it earlier before I created this thread.

austenc left a reply on Multiple Vagrant Boxes -- SSH Problem

@ohffs you'd have to be in the directory of the particular box like ~/Homestead first... otherwise vagrant doesn't know which box that applies to. With the other solution I can be in any folder and ssh in without having to cd ~/Homestead or wherever first.

austenc left a reply on Multiple Vagrant Boxes -- SSH Problem

@ohffs I guess my problem stems from the fact that I like to utilize a bash alias like this:

alias vm='ssh vagrant@ -p 2222'`

This used to be outlined in the 'Daily Usage' section of the homestead docs but it looks like it isn't there anymore. I like this setup as I can type vm from anywhere on my host system to quickly get into the currently running box. It appears adding the flags listed in the article I linked works fine though. When I was typing this thread earlier I was thinking the SSH fingerprint was based on the vm's hostname or something but it seems like it's based on the ssh command / url. Apparently I just needed to type everything out to get my head straight! So my vm command now looks like:

alias vm='ssh vagrant@ -p 2222 -o UserKnownHostsFile="/dev/null" -o StrictHostKeyChecking=no

Unless someone has any better ideas I plan to just document this as an extra "if you're running other boxes" note in my own dev setup documentation. Thanks for your response!!

austenc started a new conversation Multiple Vagrant Boxes -- SSH Problem

Hello all!

I have a need to manage and run two vagrant boxes on one system. I understand I may not be able to run them concurrently (this is fine), but I don't want to have to remove my ~/.ssh/known_hosts every time I halt one VM and bring up the other.

Here's my current setup:

  • One install that is the latest homestead box with PHP7, mysql 5.7, etc... this is for my personal projects
  • A customized version of homestead that runs a slightly older stack to support a L4 app for work. I forked settler and made a new box so we can have complete control of our dev environment for work.

Now, I've got everything working except the ability to ssh into both boxes seamlessly. Currently, if I do something like the below set of commands, I run into WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED:

cd ~/Homestead
vagrant up
ssh vagrant@ -p 2222
exit (to exit the vm)
vagrant halt

cd ~/Otherbox
vagrant up
ssh vagrant@ -p 2222

Overall, I'm just looking for better solution(s) to this issue. It'd be great to be able to utilize the same SSH command (which I've aliased to vm) for both boxes. I found a possible solution on this site, but I wanted to post here in case anyone has other solution(s) to this problem? I've seen solutions like vaprobash, but would rather not change up the stack for the sake of other developers on my team at this time. Chances are I'll be the only one running multiple boxes but it'd be great to have the ability to swap between both boxes without having to clear out my ssh hosts every time.

Anyone have any ideas? I'm assuming SSH is just using the URL to store the fingerprint and that's the reason for the conflict... is that correct?

06 Jan
2 years ago

austenc left a reply on Reporting

Depends on what type of reporting your after, could you rephrase your question to be a little more specific about what you're trying to accomplish?

austenc left a reply on L4 + PHP7 + MySQL 5.7

@bashy I really appreciate you posting that link here, as I was just about to tackle this but now it seems my best option is just rolling my own vagrant box based on a homestead with older php and mysql 5.6. Has anyone done this or written up a guide on it before (creating a new base box like homestead)?

So, in summary, L4.2 apparently doesn't work (turn-key) with MySQL 5.7 OR PHP7:

  • MySQL 5.7 has issues with default values and timestamp fields see here
  • PHP7 has issues due to the nature of the error handling (and throwing) changes see here

Thanks all! Marking this as the answer since both of you were correct and I can't mark two.

05 Jan
2 years ago

austenc left a reply on Readthedocs Alternative For PHP Or Regular Markdown?

Looks like that'd be my best option if I was self hosting or making a web service like readthedocs, very useful link, thank you! I might be able to whip up something using a fork of RTD that would jive with Sculpin. Much appreciated.

austenc started a new conversation Readthedocs Alternative For PHP Or Regular Markdown?

I was going to setup some documentation for an existing project today and planned to use While I'm comfortable with python (and mkdocs), I'd rather not burden the devs on my team with additional dependencies as they have enough to worry about already!

Is there a static site generator / service similar to readthedocs available that doesn't utilize python? Ideally I'd like to just have my *.md files and a yaml file and that's it (if possible). Otherwise it looks like I'm back to using a github wiki!