[ overboard / sfw / alt / cytube] [ leftypol / b / WRK / hobby / tech / edu / ga / ent / 777 / posad / i / a / R9K / dead ] [ meta ]

/tech/ - Technology

"Technology reveals the active relation of man to nature"
Name
Email
Subject
Comment
Flag
File
Embed
Password (For file deletion.)

Matrix   IRC Chat   Mumble   Telegram   Discord


File: 1625875540570.png ( 411.69 KB , 628x629 , gommi_june.png )

 No.9967

Hey /tech/ I've been working on a chan with a relatively modern UI/UX as a side project. I thought about adding this to an existing thread but didn't want to shit them up.

I have several goals:

1. Modern UX/UI - I wanted to give the chan/imageboard a modern makeover using modern HTML/CSS, yes, with rounded buttons etc.
2. Code Quality - I'm not a nazi about code quality on hobby projects like imageboards, but imposing some sort of basic framework or structure would still be a vast improvement over vichan style imageboards which are mostly structureless spaghetti code balls. Statically typed languages also help with this.
3. Spam Filtering - some sort of pre-emptive validation or spam filter, possibly using basic classifier algorithm, to help moderate the board.

Things that are done:

- Basic posting (threads, replies)
- Catalog View
- Support for images (jpeg, png ,etc.)
- Catalog Pruning (delete last threads on catalog after X threads)
- Links (double carrot style links to other posts and OP)
- Greentexting
- Orangetexting
- Redtexting
- Embedded Youtube Links

Things that aren't done yet:

- Non Catalog/standard view (still needs work on pagination)
- Support for videos and pdfs
- CSRF
- Moderator and Admin tools/menus & UI
- Spam Filtering
- Front/Home page with metrics
- Overboard
- Show replies to post near top of post (double carrot links to posts that have replied to that one)
- Floating Reply box in thread
- Reporting

Reach Goals:

- Themes/custom css

Things I'm probably not going to do:

- (You)'s/(me)'s
- Hiding Posts/Threads
>>

 No.9968

File: 1625875987786-0.png ( 127.23 KB , 1132x776 , microchan.png )

File: 1625875987786-1.png ( 32.06 KB , 884x539 , microchan2.png )

File: 1625875987786-2.png ( 393.66 KB , 1471x907 , microchan3.png )

>>9967

Tech Stack I'm using:

Back End:

- Java 16
- Spring Boot
- Spring Security for authentication (mods/admins) and other security
- JPA/Hibernate/JPQL for database persistence and Spring Data Repositories
- PostgreSQL

Front End:

This is a server side templated HMTL tradition web app, not an SPA.

- Java "pebble" inheritance based templating
- Milligram.css for basic css and fonts
- Alpine.js (more moder jquery replacement) and vanilla JS for front end javascript functionality

The database schema is very denormalized and simplified due to me being a JPA/JPQL amateur and having a hard time writing joins in JPQL but that has its upside in query speed.
>>

 No.9969

File: 1625876286472.png ( 439.88 KB , 648x907 , microchan4.png )

>>

 No.9971

I've been working on a federated board software called Multichan. currently working on splitting the frontend from the backend. Maybe we could collab. It uses tags (rather than boards) and will soon have a scraper that can pull threads in from remote boards and archive them.
>>

 No.9972

make an IRC or Matrix
>>

 No.9974

>>9971
that sounds cool anon what sort of collab did you have in mind?
>>

 No.9978

>>9977
someone who is tired of zooming in to hit the correct board link at the top on a phone
>>

 No.9979

>>9977
it's all styling anyways.
>>

 No.9984

>>9968
I'd have a hard time justifying calling a Spring Boot-based project "Micro-anything" considering its high RAM usage compared to even Node.js.

>The database schema is very denormalized and simplified

It will not be "simplified" in the long run if you don't go up to at least BCNF / 3.5NF.
>>

 No.10007

>>9984
>BCNF / 3.5NF.
really a meme, in reality 3NF is good enough for most production systems
>>

 No.10029

>>9991
it's written in enterprise language so nobody will contribute to it unless they get paid for their suffering
>>

 No.10036

>>10029
Java isn't my favorite language, but it's a better choice than the alternatives. The reason I didn't go with something like Php/python is because anything that requires low level functionality has to be done with some external C-built program, for example thumbnailing images with imagemagick, etc. Even rust doesn't have native thumbnailing. As opposed to natively with Java. Java also has 1.15x-2x slower speed of C so near native performance. Static type checking, mature ecosystem of libraries and tools that do anything you can think of, and it's widely known. Writing it in something like Haskell would get you hipster points but it also makes it a lot harder to develop. Additionally the thread per request process model of most java web programs, while less good than async style, is still vastly superior to the process-per-request model of php.

People have tried to write imageboards in languages like Clojure, Ocaml, etc. before and it ended up falling through because not enough amateurs out there know functional programming well enough to contribute.

The only other languages that could even be considered are C# (which I didn't want to do due to its association with the MS ecosystem and Stallman-brain people have here), JS/TS (which is associated with lynxchan), or maybe golang, although golang is also associated with a now apparently defunct other chan that was in development.

If I switch frameworks to be more microservice oriented I'll probably update that in this thread and let people know
>>

 No.10037

>>10036
>The reason I didn't go with something like Php/python is because anything that requires low level functionality has to be done with some external C-built program, for example thumbnailing images with imagemagick, etc.
Why is that a problem?
>Java also has 1.15x-2x slower speed of C so near native performance.
It's worse than 2x in most benchmarks and has to use several times more memory to achieve those speeds: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/java.html
>maybe golang, although golang is also associated with a now apparently defunct other chan that was in development.
How is that a good reason to avoid Go in favor of a worse language & framework? Also last update to gochan was just a few weeks ago: https://github.com/gochan-org/gochan
>>

 No.10038

>>10036
>lets not use a maintained an purpose built external program to do tasks like thumbnailing
Don't DIY everything, it sounds like hell to maintain.
>>

 No.10039

>>10038
>Don't DIY everything, it sounds like hell to maintain.
im using a library not DIY
>>10037
>Also last update to gochan was just a few weeks ago
the person in charge of gochan used to be a leftypol janny but unfortunately they fell off the face of the internet a while ago due to some personal issues and thus gochan is dead in the water. So AFAIK while there may still be contributions being made the project is leaderless.
>Why is that a problem?
because those programs themselves also require installation, updates, outside the package manager of the language of the chan and therefore practically mandates containerization which some other people here are opposed to implementing
>>

 No.10040

>>10037
>It's worse than 2x in most benchmarks and has to use several times more memory to achieve those speeds
so what, it's not like you're going to write a web app in C anyway. Also, often java can outperform native code due to runtime optimizations under real life non benchmark conditions anyway.
>>

 No.10041

saged my own thread in favor of a new one
>>

 No.10046

>>10040
If someone wants to run your server program on a $3/mo VPS (which means 512MB RAM), then it's better to do this in Go than Spring Boot because the latter will hog up much more memory to begin with and crash much sooner when the userbase gets larger.
>>10039
>So AFAIK while there may still be contributions being made the project is leaderless.
He still checks issues and pull requests and the last updates were by him.
>because those programs themselves also require installation, updates, outside the package manager of the language of the chan and therefore practically mandates containerization which some other people here are opposed to implementing
It's not difficult to set a guideline on which minimum version of imagemagick and ffmpeg to use.
>>

 No.10049

>>10046
>He still checks issues and pull requests and the last updates were by him.
glad to hear it, hopefully he hops on riot/element sometime.

>>10046
>It's not difficult to set a guideline on which minimum version of imagemagick and ffmpeg to use.

yes but it makes installation more complex. If you've ever installed a vichan derivative on bare metal you'll know its a pain in the ass due to all these external dependencies

Unique IPs: 8

[Return][Catalog][Top][Home][Post a Reply]
Delete Post [ ]
[ overboard / sfw / alt / cytube] [ leftypol / b / WRK / hobby / tech / edu / ga / ent / 777 / posad / i / a / R9K / dead ] [ meta ]
ReturnCatalogTopBottomHome