Notings of Attention™
Acmlmboard 2 Released
Github/GIT | @acmlmboard
Chatting Places
Discord

Affiliates
Super Mario Bros. X | Kuribo64
Views: 8,952,340
Main | FAQ | IRC chat | Memberlist | Active users | Latest posts | Stats | Ranks | Online users | Search
03-28-24 05:50 PM
Guest: Register | Login

0 users currently in AcmlmBoard Developer Zone | 1 bot

Main - AcmlmBoard Developer Zone - Lunarboard - Rewrite of StapleButter's ABXD fork in Python3/Django/Wagtail with Bootstrap + ReactJS (1)
Next newer thread | Next older thread

Pages: 1 2

AileenLumina
Posted on 07-02-16 11:01 AM, in (rev. 5 of 06-09-17 12:14 PM by AileenLumina) Link | ID: 90733
Normal User

Octorok

Level: 11


Posts: 1/20
EXP: 4801
Next: 1184

Since: 05-07-16
From: Hyrule

Last post: 2109 days
Last view: 2107 days
It's about time that we move on to a more modern and professional coding language. That's why I decided to start rewriting Arisotura's Acmlmboard XD fork in Python 3 on top of the Django framework using the Jinja2 template engine instead of Django's. Django is a very professional web framework that allows for fast and efficient coding, and it's becoming more and more popular since ~2009.

The goal of this software project is to have a clean, efficient and well-written board software that amazes both admins and users.

I made this thread mainly to tell the world about it, and to ask if anyone is interested in contributing to a powerful and beautiful board software. Just leave a reply telling me what you're good at if you feel like helping out and contributing a bit. :)

Feel free to post questions and opinions too, of course. :)


Let me introduce a new message board software: Lunarboard.



Lunarboard is a message board software inspired by the greatest ideas of social networks, blog platforms and message board software that already exist. It combines the best ideas and finds clever ways to push them to the next level. Lunarboard combines instant messages, blogs, showcases, discussions, collaboration, communities and social interaction in a beautiful, responsive, intuitive and powerful application you and your visitors will love to use.

Configurable: Permissions

Users can be added to one or multiple user group(s). You are able to fine tune the permissions for each user and group. You can define exactly who can do what, and where. We try our best to keep the permission system easy to understand and intuitive to use.

Customisable: Themes

Users can create and submit their own themes. A powerful theme creator helps with creating beautiful themes that are a joy to look at. Themes can also be configurable, meaning that users could, for instance, choose from a list of predefined colour palettes or backgrounds. Advanced themes can also contain JavaScript to, for instance, render WebGL rain in the background of the page.

Personal: Post designs and multiple avatars

Users can create post designs that change how their posts look like. They can create a number of these post designs, and you can specify a maximum. When users submit a post, they can assign one of their post designs and one of their avatars (as they can have multiple) to the post. Every user is able to disable post designs if they prefer a consistent look and feel.

Social: User Blogs

Users can have their own personal space to talk about any topic. This is of course configurable in the permissions system.

Responsive: Bootstrap and ReactJS

Lunarboard uses the most popular web styling framework, Bootstrap. This results in 100% responsiveness and beautiful pages you will love to browse. The usage of ReactJS results in consistently great performance. This combination means standards compliance with the modern web across the major web browsers. In short: Lunarboard will always look beautiful and perform well, no matter which of the major web browsers your visitors may use.

Flexible: Django ORM

Lunarboard is built on top of Django. This means it is compatible with various database management systems such as PostgreSQL, MySQL, SQLite and many more. You have the freedom to choose the database management system you prefer.

Extendable: Plugin System

Plugins can extend the functionality of Lunarboard by extending its data structure, executing logic when a certain event happens (e.g. a new user was created, or a post that contains a certain word was posted, etc.), and adding new pages, or extending already existing ones (if they define places where plugins can add their widgets).

Easy Development: RESTful API

Lunarboard’s RESTful API allows developers to interact with Lunarboard easily. There is an extensive, auto-generated API documentation that tells you in a simple way how to use each API endpoint.

Rewarding & Fun: XP System, Economy and Games

(This system is fully optional as it consists of plugins.)
Users earn XP (“Experience Points”) for submitting posts and chatting with others. Basically, they get rewarded for being active. Every time they gather a certain amount of XP, they “level up”. Users can also earn virtual money which they can spend on virtual items. These items can then be used in games. The higher the level of a user, the better the items they can purchase in the shop. Games can be added by plugins, as well as methods of earning XP and virtual money.

Secure: Spam and Flood Prevention

Lunarboard allows for the use of reCaptcha, the current industry standard for preventing automated bots from registering accounts. StopForumSpam prevents known spammers from registering accounts.

Informative: Analytics

Admins can view where visitors are coming from, how they were referred to your site and what parts of your site they visit the most. Plugins can add data that can be displayed on the analytics panel.

Other features include:

- Special pages
- Upvotes/downvotes (both optional)
- Instant messaging
- Notifications
- Custom BBCode
- Polls/Surveys
- User file storage
- Embedded Imgur/Pastebin/etc. uploaders
- Reports, warnings, temporary bans, permanent bans, IP bans

Join the discussions on the Lunarboard Discord server.


Feel free to tell me your opinions!

Kawa
Posted on 07-02-16 11:04 AM, in Link | ID: 90735
Retired Staff

Not okay
Prophet of Celestia
Level: 93


Posts: 2042/2423
EXP: 7973996
Next: 78814

Since: 01-01-12
From: The Netherlands

Last post: 2000 days
Last view: 315 days
As the original instigator of ABXD, you have my blessing. But that's all I can and will give you.


AileenLumina
Posted on 07-02-16 12:56 PM, in Link | ID: 90737
Normal User

Octorok

Level: 11


Posts: 2/20
EXP: 4801
Next: 1184

Since: 05-07-16
From: Hyrule

Last post: 2109 days
Last view: 2107 days
Hehe, thanks a lot! :)

I'm hoping I will be able to draw some interest to this project. ^-^

shibboleet
Posted on 07-03-16 01:18 AM, in Link | ID: 90749
Retired Staff

Porcupo
no
Level: 38


Posts: 207/313
EXP: 353366
Next: 17081

Since: 02-02-13
From: Maryland

Last post: 2239 days
Last view: 2208 days
python isn't professional

AileenLumina
Posted on 07-03-16 03:23 PM, in Link | ID: 90751
Normal User

Octorok

Level: 11


Posts: 3/20
EXP: 4801
Next: 1184

Since: 05-07-16
From: Hyrule

Last post: 2109 days
Last view: 2107 days
Hm, I'm not really sure why you're stating that. I consider a coding language that is serious and powerful while also being relatively easy to learn "professional". :)

Just to name a few: Dropbox, Pinterest, Reddit and Quora are having their backends written in Python.

It may be too slow for large-scale, power-hungry projects like, for instance, games, and the lack of static typing makes it hard to manage for bigger projects. (Did you mean that with your statement? If not, please explain it to me as it may be something I have overlooked when checking the pros and cons in order to determine what language to rewrite Blargboard in (I also had Ruby on Rails and Perl in mind). :) ) I admit that; still, I don't think it's "not professional". "Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java." (Wikipedia) In my opinion, Python is more modern and beautiful than most other coding languages.

shan
Posted on 07-04-16 02:24 AM, in Link | ID: 90762
Normal User

Level: 109


Posts: 2/4003
EXP: 13560213
Next: 399432

Since: 05-23-16

Last post: 210 days
Last view: 209 days
So, what features are you implementing? Or is it a simple port?

AileenLumina
Posted on 07-04-16 06:53 PM, in Link | ID: 90774
Normal User

Octorok

Level: 11


Posts: 4/20
EXP: 4801
Next: 1184

Since: 05-07-16
From: Hyrule

Last post: 2109 days
Last view: 2107 days
Some words about shibboleet's statement first. :)

With his statement, he just wanted to say that people usually write non-professional code from what he knows. (I hope I remembered that correctly; he told me on IRC.) Well, one could argue about that but that would go a bit beyond this thread's topic I think. ^^

shan Oh, hi... Do we know each other? ^^

I don't have an exact list of features I want to implement; that means I'm open to any suggestions. :) (I do have some things in mind though, like for example a very powerful Post Layout Creator (which will have many more features than the Layout Maker plugin of ABXD ;), a similar Theme Creator and a more powerful Theme Engine). I'll try to allow anyone without any coding knowledge to enjoy pyCuccoboard in its entirety, that's what I want to achieve. ^^

shan
Posted on 07-04-16 10:25 PM, in Link | ID: 90777
Normal User

Level: 109


Posts: 8/4003
EXP: 13560213
Next: 399432

Since: 05-23-16

Last post: 210 days
Last view: 209 days
Nope, we don't. Nice to meet you. :)

Interesting, sounds like something that I could see use for.
Anyway, will you perhaps make a more flexible permission system (sort-of like Acmlmboard's) in it? Or will you just leave the permission system as is/add small things into the current permission system?

It having a bit more flexibility with permissions would be great. :P

Emuz
Posted on 07-05-16 12:15 PM, in Link | ID: 90788
Site Administrator

11 Hit Combo:
Mother's Rosario
Level: 108


Posts: 2863/3392
EXP: 13210836
Next: 309663

Since: 12-30-11
From: Akron, Ohio; USA

Last post: 115 days
Last view: 17 hours
I would suggest the perm model Arisotura spec'd out for his later works, which isn't a flexible as AB 2.5 but isn't quite over the top and makes a lot of sense. It's more of a perm mask system instead of a database stored token system like 2.5. It's unfortunately not in anything public but it basically boils the style of 2.5 down to just the absolute core functions, and the ones that makes sense to split off. Than assigning that to groups using a hex flag system.

You are also more that welcome to take what 2.5 and make your own improvements on it. I'm still going to say more than the old user # system makes a more useful board to the right person.


Please do continue with this, as I think a python version of the Acmlmboard style is a perfect fit.

The Dynamic Profile Administrator™


"Never Knows Best"
Note: if you can see this my layout broke. ALL THE CREDITS WILL BE REVEALED!!
'Victory Noriko' by @thatsheepagain.
'Chibi Dance Noriko' by @Haru__Kitsu.
'Deity's Night Out (Featuring Gabbie)'
by @thatsheepagain
Noriko Emotes by @Haru__Kitsu.
Side Bar Noriko by @thatsheepagain
'Noriko's Nature Walk' by @projectTiGER_
Emotive Noriko by @thatsheepagain.
"Space Candy Noriko" by BerryVerrine.
"Super Sharp Noriko" by Xionfes.
A gift illustration from the wonderful EverKinzPony!
"Magical Girl Noriko" by @cute_hospital!
"Patient Chibi Noriko" by @Ruii_ki!
'Dapper '60s Noriko' by @thatsheepagain.
'Shiny Chibi Noriko' by @inioli.
'Flower Veil Noriko' by @Sushiee_.
'Noriko in Realism' by @_Sarybuu.
'Noriko's Midnight Adventure' by @projectTiGER_
'Yukata Noriko' by @yunyunmaru_
'Birthday Wishes Noriko' by @thatsheepagain

Arisotura
Posted on 07-05-16 12:40 PM, in Link | ID: 90790
Developer
pancakes
Level: 83


Posts: 1035/1868
EXP: 5395448
Next: 36773

Since: 01-05-12
From: France

Last post: 654 days
Last view: 193 days
Posted by AileenLumina
Hm, I'm not really sure why you're stating that. I consider a coding language that is serious and powerful while also being relatively easy to learn "professional". :)

Just to name a few: Dropbox, Pinterest, Reddit and Quora are having their backends written in Python.

So? Facebook and Wikipedia are written in PHP. That means nothing.

I find it weird to call a language "professional". You use a language because you know it well and find it adapted to what you're aiming to do (and in that case, avoiding PHP is a good idea). Just don't be like those Javascript hipsters who try to slap it everywhere just because it's 'cool'.

Similarly, I find the concept of professional or non-professional code to be kind of dumb. What is professional code, code that follows today's trendy practices? Writing good code is choosing the right design strategies for your project and applying the coding practices that make the most sense. It's not about blindly applying the 'good' practices everywhere just because you can. Case in point, OOP-- if you use it where it makes sense, it helps making your code better, but using it everywhere is a terrible idea and turns your code into a big mess.

Just my two cents. I don't know how you code, but "professional code" and such sound like tech buzzwords to me.


Posted by Emuz
I would suggest the perm model Arisotura spec'd out for his later works, which isn't a flexible as AB 2.5 but isn't quite over the top and makes a lot of sense. It's more of a perm mask system instead of a database stored token system like 2.5. It's unfortunately not in anything public but it basically boils the style of 2.5 down to just the absolute core functions, and the ones that makes sense to split off. Than assigning that to groups using a hex flag system.

One flaw of my system is that it's not easy to make local mods (requires creating a specific localmod group to put users into, because users alone can't have more perms than what their groups give them).

Anyway, my system is simple but definitely not as flexible as the Blargboard one or the AB2.5 one. It's fine for me because I want simple things, but if you're going to make a forum software for public distribution, you should go for flexibility. A lot of the potential users will expect to be able to change things to their liking without touching code. Maybe this will be different in the Python scene, but dunno.

The way perms are stored (bitmasks) also makes it hard to hand-edit the DB (moreso than in Blargboard). The benefits are that it takes way less entries to store permissions, and it's also faster to compute the user's final perms. To make for the lack of DB human readability, the board has a generic permission editor. Also, DB readability shouldn't be a concern for a public board software, ideally you shouldn't require hand-editing the DB at all.

____________________
Kuribo64 - melonDS

want some revolution in your coffee?

AileenLumina
Posted on 07-05-16 05:26 PM, in (rev. 4 of 07-09-16 06:09 PM by AileenLumina) Link | ID: 90801
Normal User

Octorok

Level: 11


Posts: 5/20
EXP: 4801
Next: 1184

Since: 05-07-16
From: Hyrule

Last post: 2109 days
Last view: 2107 days
First off, I'm going to write a completely new permissions system from scratch. I have lots of people to ask for ideas and help, all of whom have experience with such systems.

The database will be rewritten as well, but there'll be a simple upgrade.php that updates the Blargboard db for you, although user-specific permissions will likely be lost.

What I can tell for sure is that userperms and primarygroupperms (and maybe even secondarygroupperms) will be seperated. Also, the entire database will be "third normal form" conform.

I will make use OOP (a lot; heck, it's so easy to do in Python ^^), three layer architecture, and well, all the other good practices whenever they make sense (e.g. PEP8, recursion and all that).

Arisotura, with professional code, I meant code that is clean, easy to read and efficient, and with "professional language", I was referring to Python's serious attempt at and their professional way of realizing their language design model. As a result of that, we as the coders are given a very easy-to-understand yet still very powerful language that eases writing professional code (recursion is taking over :p).

Maybe an idea to get both flexibility and accessibility would be to give every permission a column (type would be tinyint(1)) and default those to NULL, thus: NULL = Neutral, 0 = Deny, 1 = Allow (If that's possible; if it's not, I'd need to do tinyint(2) as the type). That would result in faster SELECTing than if it was a bitmask (assuming that bitmask is stored as a VARCHAR).

Arisotura, with the statement you quoted I rather wanted to say that it's not unprofessional. It was more meant to deny shibboleet's statement. :)

The way I code is, uhm, very prototype-ish? I love to keep everything clean and maintain the readability and accessibility of the entire project yet I also want to keep everything as efficient as possible. I'm what people call a perfectionist, at most things. I'm always striving for the one, best, and (more-or-less) obvious solution. That's also why Python is a perfect fit for me (heck, I was able to learn Python in less than half a day (actually it was 11h 40min :p)). I know about the importance of many coding practices and habits but I think I also know when to go out of my usual path to either accomplish a better readability/accessibility or improve efficiency or whatever. I have really little experience but I'm learning really fast and have a great understanding of how IT works.

Sorry for the messy reply. ^^

shibboleet
Posted on 07-15-16 06:01 PM, in Link | ID: 90924
Retired Staff

Porcupo
no
Level: 38


Posts: 209/313
EXP: 353366
Next: 17081

Since: 02-02-13
From: Maryland

Last post: 2239 days
Last view: 2208 days


aybe an idea to get both flexibility and accessibility would be to give every permission a column (type would be tinyint(1)) and default those to NULL, thus: NULL = Neutral, 0 = Deny, 1 = Allow (If that's possible; if it's not, I'd need to do tinyint(2) as the type). That would result in faster SELECTing than if it was a bitmask (assuming that bitmask is stored as a VARCHAR).


Bitmasks aren't integers. Also, you'll be doing a lot of == to relate. That's not a good idea at all.

Arisotura
Posted on 07-16-16 11:39 PM, in Link | ID: 90938
Developer
pancakes
Level: 83


Posts: 1039/1868
EXP: 5395448
Next: 36773

Since: 01-05-12
From: France

Last post: 654 days
Last view: 193 days
actually, my bitmasks ARE ints. Each bitmask int can only hold up to 32 bits though-- to make up for that, the code can handle multiple bitmask fields. If you ever need more than 32 permissions, you'd add another bitmask field to the perms table.


also, the number in tinyint(2) (or int field declarations in general) doesn't affect the length of the field. tinyint is always one byte, int is always 4 bytes, etc. The number only affects how the data is displayed in the MySQL console.

you can only specify a size for variable-size data types, like char or varchar.

granted, that's misleading.

____________________
Kuribo64 - melonDS

want some revolution in your coffee?

AileenLumina
Posted on 07-23-16 01:56 PM, in (rev. 2 of 07-23-16 01:56 PM by AileenLumina) Link | ID: 91053
Normal User

Octorok

Level: 11


Posts: 6/20
EXP: 4801
Next: 1184

Since: 05-07-16
From: Hyrule

Last post: 2109 days
Last view: 2107 days
Comparing a bit to 0, 1 and NULL is unmeasurably fast so I'm not really sure if I got your statement the right way, shibboleet.

I'm really sure about that I will write a new permission system from scratch. I didn't even start with the database model yet though; I'll tackle the very core stuff first and practise coding in Python/Django. :)

Also, there's still various decisions to be made:

I am planning to use a CSS framework because using frameworks seems like a good practice to me ("Don't reinvent the wheel"). So, I'm wondering which one to choose: Semantic UI, Foundation or Bootstrap?

Oh, JavaScript stuff will mostly be rewritten in Python too (see Brython) if the benchmarks are showing good results.

Another thing I want to do is saving the version with all the bbcode replaced and all alongside the pre-rendered version in the database to speed up loading a lot and reduce the amount of queries. I'm not sure if I overlooked a vulnerability this causes though...

And a more dirficult thing: the licence. I can't decide between BSD, Simplified BSD and MIT. Any advice would be appreciated as I have zero experience with licensing. :)

Nicole
Posted on 07-23-16 05:33 PM, in Link | ID: 91071
Administrator
Goddess of the Apocalypse
Level: 199


Posts: 9538/14042
EXP: 111221593
Next: 1915491

Since: 01-03-12
From: Boston, MA

Last post: 229 days
Last view: 229 days
9538 4467 2
Posted by AileenLumina
And a more dirficult thing: the licence. I can't decide between BSD, Simplified BSD and MIT. Any advice would be appreciated as I have zero experience with licensing. :)

As far as I know all these licenses are basically equivalent; the differing language doesn't actually result in any real differences in rights. (Unless by BSD you mean the original "advertising clause" license, I guess)


Arisotura
Posted on 07-24-16 10:38 AM, in Link | ID: 91089
Developer
pancakes
Level: 83


Posts: 1050/1868
EXP: 5395448
Next: 36773

Since: 01-05-12
From: France

Last post: 654 days
Last view: 193 days
Posted by AileenLumina
Oh, JavaScript stuff will mostly be rewritten in Python too (see Brython) if the benchmarks are showing good results.

...a Python interpreter in Javascript? Oh my god. I can't even imagine that being fast or efficient in any way.


Posted by AileenLumina
Another thing I want to do is saving the version with all the bbcode replaced and all alongside the pre-rendered version in the database to speed up loading a lot and reduce the amount of queries. I'm not sure if I overlooked a vulnerability this causes though...

Aren't the 'version with all the bbcode replaced' and the 'pre-rendere version' the same thing? You probably meant something else.

Regardless, it wouldn't really reduce the amount of queries. It would only save time when rendering posts.

____________________
Kuribo64 - melonDS

want some revolution in your coffee?

RanAS
Posted on 07-24-16 10:57 AM, in Link | ID: 91090
Normal User
Rare
Level: 20


Posts: 2/84
EXP: 40978
Next: 1461

Since: 06-25-16

Last post: 1295 days
Last view: 73 days
If I actually knew Python or JavaScript I could actually be able to do something, but welp. I am learning web design rather quickly though, and I've had a little bit of experience with programming in general.

Not sure if I like these "multiple frameworks" thing though, I guess I don't "reinvent the wheel" if we're going to use this analogy, but I don't just grab a premade general-purpose one either. I like making a wheel using other wheels as comparison and carving what remains.

...uh translation for that: I like testing things out and figuring out coding on my own, but I don't mind having to look up any help/examples online. That's more or less what I do with actual languages too.

I can't say I'm not interested on the project at least.


"The quieter you become, the more you are able to hear." --Ram Dass

shan
Posted on 07-24-16 01:44 PM, in Link | ID: 91093
Normal User

Level: 109


Posts: 74/4003
EXP: 13560213
Next: 399432

Since: 05-23-16

Last post: 210 days
Last view: 209 days
Posted by StapleButter
Posted by AileenLumina
Oh, JavaScript stuff will mostly be rewritten in Python too (see Brython) if the benchmarks are showing good results.

...a Python interpreter in Javascript? Oh my god. I can't even imagine that being fast or efficient in any way.

I think she meant that the Javascript stuff was going to be rewritten in Python for the most part, but I could be wrong. :P

Anyway, I think a good idea would to have multiple choices of the board layout. You could possibly go with Acmlmboard's general layout, or Blargboard's layout, and/or the Lunarboard default (dunno if there will be one, though). It'd be a nice feature for those who want the board to look more like an Acmlm or Blargboard.

Arisotura
Posted on 07-26-16 08:50 PM, in (rev. 2 of 07-26-16 08:51 PM by Arisotura) Link | ID: 91223
Developer
pancakes
Level: 83


Posts: 1063/1868
EXP: 5395448
Next: 36773

Since: 01-05-12
From: France

Last post: 654 days
Last view: 193 days
yeah, the JS is rewritten in Python, but browsers can't run Python scripts natively. So it uses a Python->JS translator, which is the Brython thing that was linked.

it's nothing but an excuse for lazy fucks to not learn Javascript.

and if you already have Javascript to begin with, there is no point in doing that kind of thing, you will only waste your time and nothing good will come out of it.

____________________
Kuribo64 - melonDS

want some revolution in your coffee?

shibboleet
Posted on 07-26-16 09:26 PM, in Link | ID: 91227
Retired Staff

Porcupo
no
Level: 38


Posts: 210/313
EXP: 353366
Next: 17081

Since: 02-02-13
From: Maryland

Last post: 2239 days
Last view: 2208 days
I'd recommend portability to python 2 and 3 tbh, since people use both for some reason
Pages: 1 2


Next newer thread | Next older thread
Main - AcmlmBoard Developer Zone - Lunarboard - Rewrite of StapleButter's ABXD fork in Python3/Django/Wagtail with Bootstrap + ReactJS (1)


Acmlmboard v2.5.5 (10/04/2020)
© 2005-2024 Acmlm, Emuz, et al.

Page rendered in 0.099 seconds. (874KB of memory used)
MySQL - queries: 244, rows: 587/620, time: 0.070 seconds.