Convert Figma logo to code with AI

coralproject logotalk

A better commenting experience from Vox Media

1,884
355
1,884
37

Top Related Projects

41,716

A platform for community discussion. Free, open, simple.

1,259

The code that powers voten.co

21,885

For empowering community 🌱

6,281

HumHub is an Open Source Enterprise Social Network. Easy to install, intuitive to use and extendable with countless freely available modules.

2,884

Vanilla is a powerfully simple discussion forum you can easily customize to make as unique as your community.

Quick Overview

Talk is an open-source commenting platform developed by The Coral Project. It aims to create better conversations on news sites by providing a flexible, customizable commenting system that can be easily integrated into existing websites.

Pros

  • Highly customizable and extensible
  • Focuses on creating healthy online communities
  • Includes moderation tools and spam prevention features
  • Supports multiple languages and localization

Cons

  • Requires technical knowledge to set up and maintain
  • May have a steeper learning curve compared to some commercial solutions
  • Limited built-in analytics capabilities
  • Requires self-hosting, which may increase operational costs

Code Examples

  1. Rendering a comment stream:
import { Coral } from '@coralproject/coral-framework/lib/client';

const CommentStream = () => (
  <Coral
    storyID="unique-story-id"
    storyURL="https://example.com/article"
    containerClassName="coral-comments"
  />
);
  1. Customizing the comment count:
import { CommentCount } from '@coralproject/coral-framework/lib/client';

const CustomCommentCount = () => (
  <CommentCount storyID="unique-story-id">
    {({ count }) => (
      <span>{count} {count === 1 ? 'comment' : 'comments'}</span>
    )}
  </CommentCount>
);
  1. Implementing a custom plugin:
import { gql } from 'coral-framework/lib/client';

export default {
  mutations: {
    CustomAction: ({ variables }) => ({
      mutation: gql`
        mutation CustomAction($input: CustomActionInput!) {
          customAction(input: $input)
        }
      `,
      variables,
    }),
  },
};

Getting Started

To get started with Talk:

  1. Clone the repository:

    git clone https://github.com/coralproject/talk.git
    
  2. Install dependencies:

    cd talk
    yarn install
    
  3. Set up environment variables:

    cp .env.example .env
    
  4. Start the development server:

    yarn dev
    
  5. Access the admin panel at http://localhost:3000/admin to complete setup.

Competitor Comparisons

41,716

A platform for community discussion. Free, open, simple.

Pros of Discourse

  • More comprehensive forum software with advanced features like categories, tags, and user groups
  • Larger and more active community, leading to frequent updates and extensive plugin ecosystem
  • Built-in support for email notifications and digests

Cons of Discourse

  • Heavier and more complex, requiring more resources to run
  • Steeper learning curve for customization and development
  • Less focused on real-time commenting, primarily designed for forum-style discussions

Code Comparison

Talk (JavaScript):

const createComment = async (input, context) => {
  const { body, asset_id, parent_id } = input;
  const comment = await Comment.create({ body, asset_id, parent_id });
  return comment;
};

Discourse (Ruby):

def create_post(user, params)
  post = PostCreator.new(user, params).create
  post.trigger_post_process
  post
end

Both examples show simplified methods for creating comments/posts, but Discourse's implementation is more tightly integrated with its broader forum functionality.

1,259

The code that powers voten.co

Pros of Voten

  • More modern tech stack (Vue.js, Laravel) for full-stack development
  • Designed as a complete social platform, not just a commenting system
  • Active community engagement and feature development

Cons of Voten

  • Less focus on moderation tools compared to Talk
  • Smaller community and fewer enterprise-level deployments
  • Less documentation and support resources available

Code Comparison

Talk (JavaScript):

const { graphql } = require("graphql");
const schema = require("./schema");
const Context = require("./context");

const executeQuery = async (query, variables, user) => {
  const context = new Context({ user });
  return graphql(schema, query, null, context, variables);
};

Voten (PHP/Laravel):

public function store(Request $request)
{
    $this->validate($request, [
        'title' => 'required|max:150',
        'type' => 'required|in:link,text,img',
        'category_name' => 'required|exists:categories,name',
    ]);

    $submission = Submission::create([
        'title' => $request->title,
        'url' => $request->url,
        'type' => $request->type,
        'category_id' => Category::where('name', $request->category_name)->value('id'),
        'user_id' => Auth::id(),
    ]);

    return new SubmissionResource($submission);
}
21,885

For empowering community 🌱

Pros of Forem

  • More comprehensive platform, offering a full-featured community and blogging solution
  • Larger and more active community, with more frequent updates and contributions
  • Supports multiple programming languages and frameworks, making it more versatile

Cons of Forem

  • Higher complexity and steeper learning curve due to its broader feature set
  • Requires more resources to set up and maintain compared to Talk's focused commenting system
  • May be overkill for projects that only need a commenting solution

Code Comparison

Talk (JavaScript):

const { createApp } = require("./app");
const port = process.env.PORT || 3000;
createApp().then((app) => {
  app.listen(port, () => console.log(`Listening on ${port}`));
});

Forem (Ruby):

Rails.application.configure do
  config.cache_classes = true
  config.eager_load = true
  config.consider_all_requests_local = false
  config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present?
end

Both projects use different languages and frameworks, reflecting their distinct purposes. Talk focuses on a lightweight commenting system, while Forem provides a more comprehensive community platform built on Ruby on Rails.

6,281

HumHub is an Open Source Enterprise Social Network. Easy to install, intuitive to use and extendable with countless freely available modules.

Pros of HumHub

  • More comprehensive social networking platform with features like user profiles, spaces, and content sharing
  • Highly customizable with a modular architecture and extensive plugin system
  • Active community with regular updates and contributions

Cons of HumHub

  • Steeper learning curve due to its complexity and extensive feature set
  • May be overkill for simple commenting or discussion needs
  • Requires more server resources to run compared to Talk

Code Comparison

HumHub (PHP):

public function actionIndex()
{
    $searchModel = new ContentSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    return $this->render('index', [
        'dataProvider' => $dataProvider,
        'searchModel' => $searchModel
    ]);
}

Talk (JavaScript):

const Comment = ({ comment, settings }) => (
  <div>
    <AuthorName author={comment.author} />
    <PublishedDate date={comment.createdAt} />
    <Content body={comment.body} />
    <ReplyButton onClick={() => replyTo(comment.id)} />
  </div>
);

While both projects serve different purposes, HumHub offers a more comprehensive social networking solution, whereas Talk focuses specifically on comment management and moderation for websites and applications.

2,884

Vanilla is a powerfully simple discussion forum you can easily customize to make as unique as your community.

Pros of Vanilla

  • More versatile as a general-purpose forum software
  • Larger community and ecosystem of plugins/themes
  • Longer development history and established codebase

Cons of Vanilla

  • Less focused on modern commenting systems
  • May require more setup and configuration
  • Potentially heavier resource usage for simple commenting needs

Code Comparison

Talk (JavaScript):

const Comment = require('./comment');
const User = require('./user');

class CommentService {
  async createComment(user, text) {
    const comment = new Comment({ user, text });
    await comment.save();
    return comment;
  }
}

Vanilla (PHP):

class CommentModel extends Gdn_Model {
    public function add($fields) {
        $this->addInsertFields($fields);
        return $this->insert($fields);
    }
}

Summary

Talk is a modern, focused commenting system designed for news organizations and other websites needing a robust discussion platform. Vanilla is a more traditional, full-featured forum software with a broader scope. Talk excels in simplicity and modern features for commenting, while Vanilla offers more flexibility for various community-building needs. The code comparison shows Talk using a more modern JavaScript approach, while Vanilla uses a traditional PHP structure.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Coral by Vox Media

A better commenting experience from Vox Media.

GithubActions Docker Image Version Docker Image Size Twitter Follow

Description

Online comments are broken. Our open-source commenting platform, Coral, rethinks how moderation, comment display, and conversation function, creating the opportunity for safer, smarter discussions around your work.

Documentation

If you're new to Coral, the Coral documentation is a great place to start running and developing with Coral.

You’ve installed Coral, and you’re preparing to launch it on your site. The real community work starts now, before you go live. You have a unique opportunity pre-launch to set your community up for success. Read our Community Guides to learn more.

Support

We can help you set up Coral, migrate your comments from another system, integrate your registration platform, pair with your programmers, and help you with bespoke installs. To learn more, contact us.

Contributing

Coral is a Apache-2.0 licensed open-source project built with <3 by the Coral team, a part of Vox Media.

If you are interested in contributing to Coral, check out our Contributor's Guide.

License

Coral is Apache-2.0 licensed.

Versioning

If you're packaging a release of Coral, there is a convenient script to update the version numbers for all the child projects in the mono-repo.

The below script will run npm version x.y.z against all the child repositories so you don't have to manually update them by hand!

sh scripts/version.sh MAJOR.MINOR.VERSION // i.e. 8.5.0