board
Version, currently master branch1 version
- master branchlatestApr 2, 2017
github.com/phase/board
Board software inspired by Acmlmboard, written in Crystal
2 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
board:
github: phase/board
branch: mastermaster is a branch, not a release, so this tracks it rather than pinning a version.
Then run:
shards installshard.yml
- Crystal
- no constraint declared
- License
- MIT
- Author
- Jadon Fowler
Dependencies
Runtime Dependencies
- kemal*github: kemalcr/kemal, branch: master
- mysql*github: crystal-lang/crystal-mysql
- kemal-session*github: kemalcr/kemal-session, branch: master
README
board
This is some board software written in Crystal. It was inspired by Acmlmboard and its derivatives.
There is no name for it yet. CryBoard or BoardCr may be used.
Installing
Create a config.json modeled after example_config.json.
MySQL
Open your MySQL shell.
mysql -u root -p
Create the database and tables. You can use the provided SQL file or use the statements below.
mysql -e 'create database cryboard;' --verbose
mysql cryboard --verbose < install.sql
or
-- Create the database and select it
create database cryboard;
use cryboard;
-- Create the tables
CREATE TABLE `users` (
`id` int(32) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`displayname` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`password` varchar(255) NOT NULL,
`powerlevel` int(1) NOT NULL DEFAULT '0',
`sex` int(1) NOT NULL DEFAULT '2',
`namecolor` varchar(6) DEFAULT NULL,
`lastip` varchar(32) DEFAULT NULL,
`ban_expire` int(32) DEFAULT '0',
`since` int(32) NOT NULL DEFAULT '0',
`ppp` int(3) NOT NULL DEFAULT '25',
`tpp` int(3) NOT NULL DEFAULT '25',
`head` text,
`sign` text,
`dateformat` varchar(32) DEFAULT NULL,
`timeformat` varchar(32) DEFAULT NULL,
`lastpost` int(32) NOT NULL DEFAULT '0',
`lastview` int(32) NOT NULL DEFAULT '0',
`lastforum` int(32) NOT NULL DEFAULT '0',
`bio` text,
`posts` int(32) NOT NULL DEFAULT '0',
`threads` int(32) NOT NULL DEFAULT '0',
`email` varchar(64) NOT NULL DEFAULT '',
`homepage` varchar(64) NOT NULL DEFAULT '',
`youtube` varchar(64) NOT NULL DEFAULT '',
`twitter` varchar(64) NOT NULL DEFAULT '',
`facebook` varchar(64) NOT NULL DEFAULT '',
`homepage_name` varchar(64) NOT NULL DEFAULT '',
`tzoff` int(2) NOT NULL DEFAULT '0',
`realname` varchar(64) NOT NULL DEFAULT '',
`location` varchar(64) NOT NULL DEFAULT '',
`birthday` int(32) DEFAULT NULL,
`theme` int(8) NOT NULL DEFAULT '1',
`showhead` tinyint(1) NOT NULL DEFAULT '1',
`signsep` int(3) NOT NULL DEFAULT '1',
`icon` text,
`spent` int(32) NOT NULL DEFAULT '0',
`gcoins` int(32) NOT NULL DEFAULT '0',
`gspent` int(32) NOT NULL DEFAULT '0',
`radar_mode` int(4) NOT NULL DEFAULT '0',
`profile_locked` tinyint(1) NOT NULL DEFAULT '0',
`editing_locked` int(1) NOT NULL DEFAULT '0',
`title_status` int(1) NOT NULL DEFAULT '0',
`rankset` int(4) NOT NULL DEFAULT '1',
`publicemail` tinyint(1) NOT NULL DEFAULT '2',
`class` smallint(4) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `posts` (
`id` int(32) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`text` text NOT NULL,
`time` int(32) NOT NULL,
`thread` int(32) NOT NULL,
`user` int(32) NOT NULL,
`rev` int(4) NOT NULL DEFAULT '0',
`deleted` tinyint(1) NOT NULL DEFAULT '0',
`nohtml` tinyint(1) NOT NULL DEFAULT '0',
`nosmilies` tinyint(1) NOT NULL DEFAULT '0',
`nolayout` tinyint(1) NOT NULL DEFAULT '0',
`lastedited` int(32) NOT NULL DEFAULT '0',
`avatar` int(32) NOT NULL DEFAULT '0',
`noob` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `threads` (
`id` int(32) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`time` int(32) NOT NULL,
`forum` int(32) NOT NULL,
`user` int(32) NOT NULL,
`sticky` tinyint(1) NOT NULL DEFAULT '0',
`closed` tinyint(1) NOT NULL DEFAULT '0',
`views` int(32) NOT NULL DEFAULT '0',
`replies` int(32) NOT NULL DEFAULT '0',
`icon` text,
`ispoll` tinyint(1) NOT NULL DEFAULT '0',
`lastpostid` int(32) DEFAULT NULL,
`lastpostuser` int(32) DEFAULT NULL,
`lastposttime` int(32) DEFAULT NULL,
`noob` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `forums` (
`id` int(32) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(256) NOT NULL,
`title` varchar(256) NOT NULL,
`minpower` tinyint(1) NOT NULL DEFAULT '0',
`minpowerreply` tinyint(1) NOT NULL DEFAULT '0',
`minpowerthread` tinyint(1) NOT NULL DEFAULT '0',
`hidden` tinyint(1) NOT NULL DEFAULT '0',
`threads` int(32) NOT NULL DEFAULT '0',
`posts` int(32) NOT NULL DEFAULT '0',
`category` int(32) NOT NULL DEFAULT '0',
`ord` int(32) NOT NULL DEFAULT '0',
`theme` int(32) DEFAULT NULL,
`lastpostid` int(32) DEFAULT NULL,
`lastpostuser` int(32) DEFAULT NULL,
`lastposttime` int(32) DEFAULT NULL,
`pollstyle` tinyint(4) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Test data
INSERT INTO `forums` (`id`, `name`, `title`, `minpower`, `minpowerreply`, `minpowerthread`, `category`, `ord`) VALUES
(1, 'General Forum', 'For everybody!', 0, 0, 0, 1, 1),
(2, 'General Staff Forum', 'Not for everybody.', 2, 2, 2, 2, 2),
(3, 'Garbage', 'The worst posts.', 0, 0, 0, 3, 99);
INSERT INTO `threads` (`id`, `name`, `title`, `time`, `forum`, `user`) VALUES
(1, 'Test Thread 1', 'Sub title thing', 0, 1, 1),
(2, 'Test Thread 2', 'another sub title', 0, 1, 1);
INSERT INTO `posts` (`text`, `time`, `thread`, `user`, `rev`) VALUES
("Woah, this is pretty cool.", 123, 1, 1, 1),
("Yeah, this is neato!", 124, 1, 1, 1),
("Get your shit board out of here.", 125, 1, 2, 1);
INSERT INTO `users` (`name`, `password`) VALUES
("phase", "some_hash"),
("StapleButter", "some_weak_hash");
Uninstalling
-- Delete a specific table
drop table users;
-- Delete the database
drop database cryboard;
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This branch
- Branch
master- Seen
- Apr 2, 2017
- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/phase/board
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 14, 2026
- Synced
- Aug 14, 2026
- Versions
- 1