suave icon indicating copy to clipboard operation
suave copied to clipboard

Documentation overhaul for v2

Open haf opened this issue 8 years ago • 24 comments

Let's sketch out some ideas for the documentation overhaul for v2 of Suave. This issue tracks creating a new web site that guides people towards being proficient at writing Suave code.

Suggested structure:

  • Home page – single scrolling page, served by server
    • Quick intro

      Suave is a simple web development F# library providing a lightweight web server and a set of combinators to manipulate route flow and web part composition.

    • A counter that updates live, on how many browsers are connected using the EventSource module
    • Three 'concepts' with illustrations
      • functional – shows Hello World
      • stand alone
      • cloud / micro-services ready – Heroku, Kubernetes, Azure Functions links
    • CTAs (with sublinks – expand on click?)
      • Learn
      • Go to community
        • gitter.im
        • github / github issues
        • twitter.com/suaveio
      • Commercial support
        • Commercial support providers, e.g. Mark Grey?
    • Walkthrough
      • Outline – showcase e.g. FsSnip including how it's hosted
      • How to set up VSCode and .Net Core for Suave.IO usage, with screens/animated gifs
      • Hello world (repeated)
      • Filters – e.g. path, pathScan
      • Testing your app so far with Suave.Testing
      • Files
      • Deferring execution with warbler/request/context
      • Building HTML on the server with Experimental
      • EventSource
      • WebSocket
      • Setting up log shipping, tracing and metrics with Logary
      • Deploying to google cloud and Kubernetes
      • Writing Azure Functions
  • Nice to use with (tm)
    • Fable
    • Fable + ReactJS/webpack
    • OWIN
    • Suave.Swagger
    • Suave.Hawk
    • Suave.Locale
    • Suave.OAuth
    • Logary
  • Concepts
    • Security
      • CSRF
      • Authentication; basic, hawk, oauth, claims
      • Authorisation
      • TLS
    • Logging
    • Redirects
    • Input validation & form binding
    • Reverse proxying
  • Contribution guidance
  • Sites using Suave
  • Testimonials
  • Videos
  • Blog Posts

Also:

  • It would be great if each page had a link to itself in this repo, to allow quick changes
  • ...

haf avatar Nov 05 '16 18:11 haf

A few more ideas: Suave is also nice to use with Suave.Oauth and Logary. Maybe it needs a section for authentication or at least a pointer to the authentication section in the Suave Music Store. Also perhaps add a section for web security concerns like CSRF, OpenSSL, certificates, etc.

scitesy avatar Nov 05 '16 19:11 scitesy

@scitesy Updated the list

haf avatar Nov 05 '16 20:11 haf

I also thinks this looks great. Maybe an explicit section about webparts and combinators. It should explain how to write a basic combinators from scratch to five users a better understanding of what you can do with suave. This could be "baked" into one of the other parts of the docs, but an explicit entry will make it easier to find it.

mastoj avatar Nov 05 '16 20:11 mastoj

Suave is also nice to use with Topshelf. :)

I'm currently working through an input validation / error handling story in our Suave project at work. That sort-of fits with mastoj's suggestion of a combinator-from-scratch workbook, and might make a good motivating example.

MattJOlson avatar Nov 06 '16 21:11 MattJOlson

How about having a sandbox environment "TrySuave"? The User can define the WebPart in an editor, Define the request (we can provide a user interface like Postman) and see it in action?

Requires lot of effort from our side though but I feel it's worth having!

tamizhvendan avatar Nov 11 '16 05:11 tamizhvendan

It's a nice idea to have documentation based on concepts (logging, authentication, etc.,). While documenting we need to provide a real world example.

tamizhvendan avatar Nov 11 '16 05:11 tamizhvendan

We can separate sections for

  • "Sites using Suave"
  • "Testimonials"
  • "Videos"
  • "Blog Posts".

I feel it would be nice to have a donation page. @haf and @ademar deserve it!

tamizhvendan avatar Nov 11 '16 05:11 tamizhvendan

@tamizhvendan You and I should create some videos for each section. Get the low hanging fruit to make it easier for people to get up to speed with Suave. Then we see what people are struggling with or where other think there could be some improvement and we can then focus in those areas.

monkieboy avatar Nov 14 '16 10:11 monkieboy

I would like to see a greater effort around:

  • Suave+Fable
  • A better explanation around choose and the combinatory flow of webparts (I will write it as I understand, and you can validate that it is as accurate as it will be descriptive and easy-to-understand)

monkieboy avatar Nov 14 '16 12:11 monkieboy

@monkieboy on what level do you want to see a greater effort around Suave+Fable? Re-use of models? I've been playing with the idea of having isomorphic html dsl for both Suave and Fable, but there are a lot of problems associated with that. So if you were thinking a long those lines I probably think that is out of scope, but it would definitely be nice to some use cases with apis in Suave and the re-use of the model and types in fable.

mastoj avatar Nov 14 '16 14:11 mastoj

I was thinking mostly about use cases, making the barrier to entry as small as possible by providing (small initially) examples.

monkieboy avatar Nov 14 '16 15:11 monkieboy

All that you're saying makes sense guys. Divide the work; e.g. by creating an issue per section and claiming it. Docs are in ./docs.

I've updated the static file handling docs tonight https://suave.io/files.html

haf avatar Nov 15 '16 21:11 haf

@tamizhvendan I've added your suggestions to the large list.

haf avatar Nov 15 '16 21:11 haf

By the way; you're documenting a web server that can do almost anything; let your imagination run free and make the docs fun when you write them! We can host almost any backend system, too, like EventStore if you want to showcase some part of F# through that.

haf avatar Nov 15 '16 21:11 haf

@haf between this link (https://suave.io/Suave.html) is no longer pointing to the auto-generated API docs.

ademar avatar Nov 16 '16 13:11 ademar

I know, somewhere a few commits ago, @polytypic's doc generator broke down, so it's currently suspended... Just running the rake task for it reproduces its error, so it's easy to reproduce.

haf avatar Nov 16 '16 16:11 haf

How's it going everybody? :)

I just corrected the docs for socket bindings.

haf avatar Dec 01 '16 21:12 haf

One thing that is not directed related to Suave but would be helpful to be in the docs is to have a project setup section where you integrate with Brunch/Webpack for building static assets, hot reloading of F# files, etc...

imetallica avatar Jan 01 '17 03:01 imetallica

Is there any way to view the API documentation yet? Trying to learn Suave but it's very hard since I only can finde scattered snippets across the web. Many of which seem outdated.

johanvts avatar Mar 25 '17 14:03 johanvts

Can you solve https://github.com/SuaveIO/suave/issues/536#issuecomment-289215305? Then I can push the update.

The API docs is the generated docs.

haf avatar Mar 25 '17 14:03 haf

@haf - #615 should solve #536.

rmunn avatar Apr 27 '17 11:04 rmunn

Hi all,

With the help of @theimowski, I came up with a git book version of current suave documentation.

One major advantage I am seeing in this approach is, we are getting the nice formatting from git book and tooltips in the code snippets image.

This tooltip will help the reader to know the namespaces and modules directly.

Looking forward to knowing the feedback and how can we take it from here?

tamizhvendan avatar Jul 13 '17 04:07 tamizhvendan

Thank you for your patience. I really appreciate the work you've done.

The docs need to be part of our web site with Suave web site styling for me to point everyone and everything to them. Having a gitbook is nice, but we need to have the branding there, or the docs won't work.

haf avatar Apr 23 '18 07:04 haf

Good evening everyone. I was directed to this issue as one of the good ones for beginner open source contributors. However, I have no idea about what Suave is? Is this a wrong project for me? Or can someone please kindly put me through? Thank you very much everyone

ghost avatar Mar 24 '20 20:03 ghost