Code Monkey home page Code Monkey logo

go-writeas's Introduction

 

WriteFreely


Latest release Build status Go Report Card

 

WriteFreely is a clean, minimalist publishing platform made for writers. Start a blog, share knowledge within your organization, or build a community around the shared act of writing.

Try the writing experience

Find an instance

Features

Made for writing

Built on a plain, auto-saving editor, WriteFreely gives you a distraction-free writing environment. Once published, your words are front and center, and easy to read.

A connected community

Start writing together, publicly or privately. Connect with other communities, whether running WriteFreely, Plume, or other ActivityPub-powered software. And bring members on board from your existing platforms, thanks to our OAuth 2.0 support.

Intuitive organization

Categorize articles with hashtags, and create static pages from normal posts by pinning them to your blog. Create draft posts and publish to multiple blogs from one account.

International

Blog elements are localized in 20+ languages, and WriteFreely includes first-class support for non-Latin and right-to-left (RTL) script languages.

Private by default

WriteFreely collects minimal data, and never publicizes more than a writer consents to. Writers can seamlessly create multiple blogs from a single account for different pen names or purposes without publicly revealing their association.

Write.as

The quickest way to deploy WriteFreely is with Write.as, a hosted service from the team behind WriteFreely. You'll get fully-managed installation, backup, upgrades, and maintenance — and directly fund our free software work ❤️

Learn more on Write.as.

Quick start

WriteFreely deploys as a static binary on any platform and architecture that Go supports. Just use our built-in SQLite support, or add a MySQL database, and you'll be up and running!

For common platforms, start with our pre-built binaries and head over to our installation guide to get started.

Packages

You can also find WriteFreely in these package repositories, thanks to our wonderful community!

Documentation

Read our full documentation on WriteFreely.org —️ and help us improve by contributing to the writefreely/documentation repo.

Development

Start hacking on WriteFreely with our developer setup guide. For Docker support, see our Docker guide.

Contributing

We gladly welcome contributions to WriteFreely, whether in the form of code, bug reports, feature requests, translations, or documentation improvements.

Before contributing anything, please read our Contributing Guide. It describes the correct channels for submitting contributions and any potential requirements.

License

Copyright © 2018-2022 Musing Studio LLC and contributing authors. Licensed under the AGPL.

go-writeas's People

Contributors

abhinav avatar professortom avatar samwhited avatar thebaer avatar

Stargazers

 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

go-writeas's Issues

Markdown Alt text on images not recognized on some cases

(not sure if this is the right place to post this, I've copied my post from https://discuss.write.as/t/markdown-alt-text-on-images-not-recognized-on-some-cases/2818)

I’ve noticed that on some of the images on my blog, the alt text (i.e. the part between ![ and ](https://my-image-url.png) is missing from the generated HTML code.

To be more precise, consider the following Markdown:
![Capture d'écran de Our House de GameGrumps (url)](https://système.pointecouteau.com/writeas/superliminal.png)

When I save my post with this code, it is correctly converted:
<img src="https://syst%C3%A8me.pointecouteau.com/writeas/superliminal.png" alt="Capture d'écran de Our House de GameGrumps (url)">

Howewer, for those two Markdown sentences, the generated HTML omits the “alt” tag entirely for some reason:

  • ![Capture d'écran de "Our House" de GameGrumps](https://système.pointecouteau.com/writeas/superliminal.png)
  • ![Capture d'écran de Our House de GameGrumps (https://www.youtube.com/watch?v=k55FYtqtXXU)](https://système.pointecouteau.com/writeas/superliminal.png)

Why is that? Do I need to insert some sort of escape character before quotation marks or slashes?

Add mechanism to block until page created

Overview

When creating a new page with the API, and then attempting to pin it, pinning fails because the new post isn't yet created. It sometimes takes a few seconds after the request to create the page has returned before the page actually exists.
It would be nice if the API either blocked and only returned the request when the post actually existed and could be manipulated, or if there was a mechanism to wait until a post existed (short of polling in a loop and hammering your servers until we get a page back).

I couldn't find any documentation that mentioned that page creation was eventually consistent, so if this is unintentional consider this a bug report instead of a feature request.

Version of this library on documentation page is out of date

On this page, an old version (v1) of this library is listed: https://developers.write.as/docs/api/?go#libraries

The current version is v2. This led to me using an out of date version for a while when starting my project that uses write.as.

Similarly, the page lists a "go.code.as" import path, however, the examples and writeas-cli use an unversioned GitHub import. Having some consistency and guidance on what should be used in the documentation would be helpful.

Thanks!

Overriding base URL

Overview

The library has 3 hard-coded URLs for the API service. It should probably
support changing the URL for testing and to allow users to point the client to
their own instance of WriteFreely.

Implementation

Rather than add another parameter to the constructors (thus breaking the API),
I propose adding a NewClientWith(Config) *Client constructor where Config
is a struct with a bunch of optional fields. This will also allow adding other
new optional parameters for client configuration in the future without
breaking the API.

Feature request: ability to update collection

It would be nice to be able to update a collection from the SDK, including the title and description but also other properties that we are not able to set when creating a post such as the domain, stylesheet, public/private status, etc.

This would allow write.as blogs to be managed entirely declarative using tools such as Terraform or custom tools designed to upload markdown files and create/delete blogs.

context.Context support

Overview

Go client libraries typically accept a context.Context as the first
argument in all outgoing function calls. The context carries deadline and
other information across API boundaries. See also https://blog.golang.org/context.

Popular examples are,

Context also allows orchestrating cancelation, especially with concurrent
operations. Support for this is already built into http.Client.

Implementation

All methods that make an outgoing request would have to accept a
context.Context as their first argument and plumb it over to http.Client
with req.WithContext(ctx), likely in buildRequest or prepareRequest.

Because this will involve a breaking change to the API, it should probably be
bundled with any other breaking changes you have planned.

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.