>>19091I don't see a reason to use PHP in today's world. All other languages are good enough. Everyone's learning other languages nowadays.
PHP is not so different to, say, python or java. Just use what you're comfortable with and bias less shitty languages.
Btw, there was a work in progress for a technical design document for a new imageboard, no? I keep revisiting the idea of wanting to build an imageboard as a hobby, but it's way too overwhelming unless I have some reference to program from. I'm thinking of writing a TDD, but the amount of effort that would take is way more than the time I actually have for hobbies.
I'd start with a list of features, grouped by type, and separated into two or three phases. Phase 1 would be "mvp". Phase 2 would be "feature parity with vichan". Phase 3 would be "nice to have".
The description of Phase 1 and Phase 2 features would be the most important.
Afterwards, I'd start adding API endpoints to the features. How exactly will the front end achieve these tasks. I'm assuming the system will have an API. It's also important to remember the requirements, if the site is available with no javascript, then the API must account for that.
Then I'd start sketching out request and response objects for the API. Nothing too fancy.
Afterwards, I'd start building entity relational models based on the APIs, the constraints, and the request and response objects.
And I think the last step would be to annotate each feature with a description of the Front End implementation. How exactly will it be implemented in the front end?
So at the end you'd have a document that says something like:
Phase 1:
Posting:
User can create a thread:
The user can create a multimedia thread. The OP has name, subject, etc.
API:
POST /threads
or maybe
POST /boards/{boardId}/threads
Request object:
name: Text
body: Text
Response:
id: uuid
Related DB storage:
thread:
- original_post: Post (fk post) <- this is required for the implementation because x and y
- created_at: date
- is_anchored: bool
(this db part is just an example, doesn't have to be this way, it's loosely based on the example here
>>14251)
Administration:
A moderator can do X or Y:
etc etc…..
The point of doing this would be to make sure that all the features of vichan are accounted for. This would be language, framework, etc etc agnostic. Perhaps the only non-agnostic part of it is that it probably assumes a relational DB. The other important part is that it lays down all the features and forces them to play together, allows them to be inspected and questioned. It will essentially force you to build the software taking into account all the features that are expected of the system.
Hopefully this document would serve as a guideline for the future developers who decide to build an imageboard system.