prolesoft / marxist.space Goto Github PK
View Code? Open in Web Editor NEWFilterable database of resources for Marxists/Marxist-Leninists.
Home Page: https://marxist.space
License: Other
Filterable database of resources for Marxists/Marxist-Leninists.
Home Page: https://marxist.space
License: Other
The submit/clear search buttons are a little ugly right now. Some nice SVGs that fit well with the look and feel of the site would go a long way towards making things feel more uniform.
This should happen before v2, to explain what we're doing and why.
Bug
Search should work like a form, with a submit button.
Search is a debounced onchange right now. I thought this would be nice, but it feels really bad on mobile, and as the data set grows it's going to get slower and slower. This component should work more like a form.
npx envinfo
):I'm just running this the old-fashioned way, running Node on a VPS behind Nginx, but it might be nice to include a Docker build example and possibly Kubernetes deployments.
Related: #6
Bug
Coverage should probably be in the single digits
Coverage on the client is reporting as being 100% because it's only including tested files
npx envinfo
):Things change at different sizes. It would be a good idea to pick one width as the "mobile" breakpoint to switch from a mobile/tablet experience to a desktop experience.
Feature
The pipeline shouldn't rebuild both the client and server and restart the server if it doesn't need to. Getting the diff from the previous tag can be used to only rebuild what's necessary, or just forever restart 0
if the only thing changed was db.yml
. It would also be nice to only test on PRs, to avoid re-running tests on code we already know is good once it's merged and on npm version
commits.
Everything is rebuilt and restarted on every tag.
npx envinfo
):N/A
On mobile widths, the tags and search are just pushed to the bottom with a jump button. This feels awkward.
It might be better to hide the tags and search completely on mobile, and have a button that toggles open a full-screen overlay that shows just the search and tags.
I just uploaded a document with a lot of articles and some documentaries that I collected over the years. A lot on the Soviet Union, China and North Korea, but also more general stuff. Not sure which of this would be relevant for you, but feel free to copy anything you want.
last test
There are some issues according to lighthouse: https://www.webpagetest.org/result/200223_32_4e5df7c1793b17cb5a89d512b5630db5/
All of them should be easy to fix
asdf
There is currently only one example client test. There's a Jest + Enzyme setup ready, and most of the components can be tested pretty simply with snapshots. It would be nice to have reasonably good coverage.
asdf
The React app should be profiled and improved. Removing Redux, removing Styled Components, and switching to a lighter-weight React alternative (Preact or Inferno) could all be helpful.
Description
react-dev-utils has some nice helpers, but no independent changelog from CRA so it's hard to update without breaking everything. We should just remove it.
Additional context if applicable
asdf
Because of new features like tagging, citations, search, etc., the UI will have to change significantly. I'd like to keep the site functional without JS on the client side, so any major additions to the UI need to degrade gracefully. Dropping this requirement because it'll be painful.
@aeshthetic's idea, we should satisfy the use case of "I need resources to help me explain that there are no death camps in Xinjiang," preferably with some kind of excerpts for easy citation. This probably depends on #8 but builds on top of it.
We should enable http2 for clients that support it.
We'll need some kind of data storage. It'd be nice to avoid a database and keep flat files (JSON, YAML, or TOML) in the repo so folks can still contribute easily.
For v2 we'll need to move to actually running a server. Probably just use http://github.com/zacanger/ts-microservice-boilerplate as the base, since I know it already.
one
Feature
The home page should only render X amount of items (maybe 50?), and load more on scroll.
Everything in the "database" is rendered on load. This isn't a huge problem right now, but as the data grows it might become one.
I've used a few different lazy loading components and haven't really loved any of them, but it might be better now with IntersectionObserver as long as there's a good polyfill out there.
This work would probably take place in here.
asdf
The current tag searching just checks for s
on the end, which is crappy. There are libraries out there that singularize or pluralize words, we could use one of those instead.
The current search works fine given the amount of data, but as that grows it'll get pretty nasty. It could be replaced with Fuse or something similar.
This is just a quirk of working with client-side routing, but can be fixed. Since /about is the only client-side route besides the home page right now, it's not a big deal.
This should get hooked up to Codecov and Codeclimate, plus run tests on PRs and report back. Badges would be nice, too.
It would be good to go through all the current tags and remove noise and synonyms, and move the tag alias work to happen in search rather than at DB load. The goal here is that if someone clicks dprk
they also get results tagged juche
, or if they search for cops
they'll see also results tagged police
, for example.
According to a Lighthouse report from today, the service worker doesn't seem to be working correctly. This could've been from the Workbox webpack plugin update.
one
Bug
If I search for china debunk
I should see only resources that match both of those
I see resources that match any of those
The fix is probably to add matchAllTokens: true
to the options here
npx envinfo
):N/A
Description
Since everything except the actual resource list lives in a sidebar, it's getting a little long now. Collapsible sections should be added, so users can see only tags, only search, etc.
Additional context if applicable
asdf
As part of #5 we should have a submission form for new resources that hits GH to create a new issue or PR.
The tags list, especially, is all bad when running locally, but is fine in a prod build. I don't know why yet, and it could even be just me.
https://example.com
example
tags: example, one, two
Bug
Cloning the repository and running jekyll serve
should produce a locally hosted site identical to https://marxist.space
Cloning and running jekyll serve
renders a sitemap at the index, and pages that don't have the default layout (and therefore no CSS) applied to them. Furthermore, jekyll complains about the {% seo %}
on line 5 of the default layout.
We could add structured data for better performance and appearance in search engine results. Some examples of things we could do:
The first one would require rethinking search (see #43) to use a query string.
Validation can be done with http://linter.structured-data.org/ and https://search.google.com/structured-data/testing-tool, and should also be tested with https://www.webpagetest.org/lighthouse once it's deployed.
v2 will need a way to make content sortable and searchable. I think a system of set tags would be the best option here, so you could search for documentaries
and china
and get a list of items tagged with both, for example.
There's currently only one example server test. Jest setup is ready for them, it would be cool to have moderately good coverage.
asdf
This will need a pipeline, maybe Docker build, server set up somewhere, DNS, etc.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.