Skip to main content

remarkbox

Project description

What is RemarkBox?:

A stand alone question and answer site (forum) or an embedded comments or product reviews service. Works anywhere that supports HTML.

Original Developer:

Russell Ballestrini (https://russell.ballestrini.net)

Project Goals

Note:

These goals are not in priority order.

  1. To be a suitable for:

    • question and answer sites (StackOverflow)

    • embedded comment system for static sites

    • forums

    • product review sections of e-commerce sites


  2. To choose popular libraries instead of proper libraries, for example:

    • Github over Bitbucket (seriously considering GitLab)

    • Git over HG Mercurial

    • Jinja2 templates over Mako templates

    • Markdown over ReStructuredText

    • etc


    Basically I have been burned too many times trying to pick the proper library or tool for the job, so this time around, I will make effort to choose solutions that the majority uses.

  3. To be popular

  4. To be safe from spammers

  5. To be easy to manage and clean up spam if it happens

  6. To be passwordless. Registration, verification and authentication happen via one-time-password codes sent via email.

  7. To scale horizontally

  8. To be multitenant

  9. To have low friction for new users to join (posters and commenters)

  10. To be engaging for users (posters and commenters)

  11. To be search engine optimized

  12. To have great test coverage

Local Installation

We utilize a Makefile to capture targets for building a local Remarkbox environment. Please make sure you have make installed.

  1. make dev

  2. make test

## For WSL Users

If you are using Windows Subsystem for Linux (WSL), follow these steps to set up your environment:

Activate the virtual environment

source env/bin/activate

Install dependencies:

pip install -r requirements-wsl.txt

### For Other Users

For users on other platforms, follow these steps:

Activate the virtual environment:

source env/bin/activate

Install dependencies:

pip install -r requirements.txt

Functional testing environment

To setup a “functional testing” environment on your personal workstation, open two terminal shells.

In the first shell, run a copy of Remarkbox using:

make serve

In the second shell, run a “mock” simple HTTP web server to serve index.html:

make http

Now browse to http://127.0.0.1:8000 and index.html will load. This has an embedded copy of Remarkbox which is also running on localhost.

If you attempt to log in, a verification one-time-password code will be sent over SMTP to log in! If you do not have an SMTP server the socket error will log email to console when in development.

New Environments

If your deployment is brand new, you don’t need to run any migrations.

To create all the schemas & tables in your database, run these steps:

Activate the virtual environment:

source env/bin/activate

Create all the schemas & tables in your database

env/bin/remarkbox_init_db development.ini

You should however run this to stamp the database as ready:

alembic -c development.ini stamp head

SQL Migrations

Otherwise, it should be safe to run this at anytime to catch your database up:

alembic -c development.ini upgrade head

To look at the current revision and the history run these:

alembic -c development.ini history
alembic -c development.ini current

If you ever want to cut a new migration script, you can run this:

alembic -c development.ini revision -m "Added email_id column to User table."

Then you can edit / modify the generated .py file with your changes.

You can also autogenerate a new migration script using –autogenerate. Alembic will prepare a migration script by comparing the state of the database with the state of the model:

alembic -c development.ini revision --autogenerate -m "autogenerated indices."

You should review the recommended migration script before upgrade.

Cleaning the homepage

Sometimes (all the times) it’s nice to clear all the test comments from the homepage of our marketing site. Use this query.

sqlite> UPDATE rb_uri SET data = "https://www.remarkbox.com/?cleaned=2018-09-28" WHERE data = "https://www.remarkbox.com/";

sqlite> SELECT * FROM rb_uri WHERE data LIKE "%https://www.remarkbox.com/?cleaned%";
1e631dd85d104555b41b300961d2f909|82008b2b178f4daab64c35ab5c5f9b56|https://www.remarkbox.com/?cleaned=2017-11-01
6b2a4772679611e8ad95040140774501|6b2a42ae679611e8ad95040140774501|https://www.remarkbox.com/?cleaned=2018-09-28

Looking up paying customers

SELECT * FROM rb_pay_what_you_can
    INNER JOIN rb_user ON rb_user.id = rb_pay_what_you_can.user_id
    WHERE amount > 0 and rb_user.stripe_id is not null;

Python Pyramid Shell

If you want to use an interactive Python interpreter to interact with the Remarkbox app/models and database:

pshell development.ini

Here is a full pshell script to modify every Node who has a Uri:

# begin the database transaction.
request.tm.begin()

# get all Uri objects.
uris = m.uri.get_all_uris(request.dbsession)

# iterate over all Uri objects.
for uri in uris:
    # modify the Uri's related Node.
    uri.node.has_uri = True
    # add the related Node object to the sqlalchemy session.
    request.dbsession.add(uri.node)

# flush / commit all changes stored the sqlalchemy session.
request.dbsession.flush()

# commit/close the database transaction to really make changes.
request.tm.commit()

Contributing

  • Establish communication with Russell or another admin to bless your git.unturf.com gitlab account & put you into the proper roles.

  • Russell should see your account request but due to spam you have to ask him directly for approval via email or some other means of comms.

  • Clone repo & make commits

  • Create merge requests, we automatically run the unit & headless functional tests on each commit

  • On merge we release to the production site & see the change across users.

Optionally, format your code.

This is not set in stone, but if you want to use a formatter this is the path for now!

Python

black (manual)

Jinja2

None (not needed, neither is an HTML formatter)

JavaScript

Prettier or biome (manual)

CSS

Prettier or biome (manual)

Licence

All code contributed goes into the public domain.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

remarkbox-0.0.11.tar.gz (220.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

remarkbox-0.0.11-py3-none-any.whl (265.5 kB view details)

Uploaded Python 3

File details

Details for the file remarkbox-0.0.11.tar.gz.

File metadata

  • Download URL: remarkbox-0.0.11.tar.gz
  • Upload date:
  • Size: 220.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for remarkbox-0.0.11.tar.gz
Algorithm Hash digest
SHA256 c463e83f63beee6d32d459d91aed5f12aa80ba8fc8e5012e8e503868b6114434
MD5 1bd76460ed5b0877ee961d0b0f4d9668
BLAKE2b-256 4deae86632905b1db5938d75154260b2beb6367c2be5dcdee959c06718f26693

See more details on using hashes here.

File details

Details for the file remarkbox-0.0.11-py3-none-any.whl.

File metadata

  • Download URL: remarkbox-0.0.11-py3-none-any.whl
  • Upload date:
  • Size: 265.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.1

File hashes

Hashes for remarkbox-0.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 2bf2ca75c38f3e4d349d023793738b80cbfb8c71cdfdd9feb0def6ed5a876c62
MD5 d36a1cb7e952e39e96cc295f6ec49232
BLAKE2b-256 99e3001897be9f8ac3d1979cae31a20ccf02f0c0c044cc998e05bab1634c62d3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page