GithubHelp home page GithubHelp logo

markasoftware / specdb Goto Github PK

View Code? Open in Web Editor NEW
29.0 8.0 11.0 977 KB

A beautiful web app for viewing and comparing the specifications of PC hardware.

Home Page: https://specdb.info/

License: GNU Affero General Public License v3.0

JavaScript 87.46% HTML 0.72% CSS 8.17% Makefile 3.51% Emacs Lisp 0.14%
pc-building web-app scraper amd offline-first frontend-app

specdb's Introduction

SpecDB

SpecDB is a beautiful and easy-to-use AMD equivalent to Intel's ARK. It's powered by Mithril and Browserify on the front-end, and has no backend (just static files).

SpecDB (master branch) is live at https://specdb.info/, and the beta branch is deployed at https://beta.specdb.info/

Visit our Discord channel to chat with other developers!

Look at the wiki for more detailed technical info than this readme!

Prerequisites

  • Unix-like system. Linux, Mac, and some sort of BSD are all ok.
  • GNU make: This comes out-of-the-box on Linux and Mac.
  • curl: Also comes out-of-the-box on Mac and most Linux distributions.
  • Optionally: entr. This will allow you to automatically rebuild SpecDB when you modify a file.

Setting up

  1. Clone the repo — git clone https://github.com/markasoftware/SpecDB.git
  2. cd SpecDB
  3. make — generate front end resources from source code. This must be run after every change to the source code or specs.

The make command will take a while to run the first time -- it has to do all the scraping as well as installing NPM dependencies. However, make is smart (thank RMS), so subsequent runs will only build the minimum amount necessary.

Then, you can view SpecDB at file:///home/markasoftware/whatever/specdb/, which should be good enough for development.

Bonus Commands

  • make watch: Start auto-rebuild daemon. You still need to manually. Requires entr
  • make test: Run unit tests. If any of these fail, do not commit! Fix them!
  • make production: Build for production. If you previously ran make without production, run make clean-nonet before this.
  • make clean: Destroy all generated files. This will trigger a rescrape the next time you run make.
  • make clean-nonet: Destroy all generated files that can be re-generated without a network connection (i.e, it will not trigger a re-scrape).

Contributing

Specs are in the specs/ folder. You can probably see how they're done by looking at the files there, but there's more detailed documentation in the wiki. Additionally, some rudimentary Node.js scripts which can be used to make part creation a bit easier are there.

To contribute, please make a fork, and in your fork branch off from master to something like myusername-bulldozer-cpus, and when making a pull request, go from that branch to beta.

BrowserStack

BrowserStack logo

Browserstack won't let me get their open-source plan without including their logo here. I can tell they really love open source and aren't just trying to get free advertising. Especially since the Browserstack backend/whatever is used to do real-device testing remotely isn't open source. But whatever, they're the only ones who provide decent real-device testing so I guess I have to use them because I don't want to buy Apple shit.

specdb's People

Contributors

arnaudsaintgenez avatar benzhaomin avatar littlevulpix avatar markasoftware avatar pancrisp avatar sam-mear avatar zcskywire2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

specdb's Issues

Compact View

A compact view mode would be added to make it easier to view lots of data at once, or maybe some people just like that way better.

Basic SEO stuff

Dynamically update title and meta description for the different hash things. Maybe also make a sitemap with all single-part spec pages?

Neglecting to set Boost Frequency: for CPUsbreaks the application

While yes this seems quite obvious as leaving any field null is bound to cause issues, leaving this field undefined causes the application to misbehave in the same ways as #16. This becomes an issue when you have CPU's that do not have turbo boost. Simply setting Boost Frequency: N/A resolves the issue, however this certainly not the best solution. Perhaps a Boolean variable for turbo mode much like the one for XFR
support would be a more proper solution?

Table cannot be swiped left or right on mobile

With the table update on the beta branch you cannot slide it left or right to view all the components in compare. This leaves most of them cutoff and unviewable. May also affect the desktop version. Also the old table buttons are there and do nothing ATM.

Deal with variants properly

For example, many gpus have multiple options for vram capacity. Having separate "parts" for each one is ok, but it could get unwieldy with more than 2 variants (for example, nvidia increasing the memory clock rate for the gtx 1060 or something which already has 2 vram options would result in 4 options. Maybe, if multiple variants, options show up after click, sliding up from bottom with css transition? Multiple .yaml files and parts internally is a good idea though, and it could make the subtext weird...needs more brainstorming...also with relation to filtering, although it's not a huge issue I think, if done like this the user can probably figure out which variant meets their criteria without too much pain

Better naming for CPUs

Possibly have separate names for selecting and searching. Or, perhaps split up things in search results.

SEO

For some reason beyond my understanding, Google really hates indexing SpecDB. Fetch with googlebot returns the data I want, prerendering for ?_encoded_fragment_ URLs is enabled in netlify and i can confirm it's working, all part urls are in a sitemap.txt that Google understands, yet the Google Search Console reports that all pages but the homepage are either "crawled - not indexed" or "discovered - currently not indexed". Maybe it's because nothing links to them? See https://search.google.com/u/1/search-console/index/drilldown?resource_id=https%3A%2F%2Fspecdb.info%2F&item_key=CAMYFiAC&sharing_key=L6_mBMmlhDVwmk4j5ZzxKQ

If anybody has some experience with SEO stuff, especially with single-page-applications, it would be great if you could provide some advice for helping the pages get indexed.

Renoir unfinished and Cezanne not started

Some of renoir are desktop, and some are mobile. Should they be split among the two folders?

Ill make a pull request with what my scraper found on renoir and cezanne but only keep them in beta as they wont have all the APU fields they need, just the CPU ones for now.

Better URL hashes

The right panel should be included in the URL with a separate "share" link which strips that part from the URL.

Split table into sections

Maybe split table into sections, for example, "freqeuncies" and "VRAM stats" to make it look nicer/a bit more organized.

Add more documentation

Mainly, to make it easier for people to add parts, rows, etc. Also for build process.

Mobile support

doesn't have to be perfect right off the bat, but needs to be useable.

Max temps

Is it possible to have the max temps for each processor? I know that information is not easily obtainable, but that's the main reason for me to discovering SpecDB... and that info is nowhere to be found.

CPU human names cannot consist only of numeric characters

When a CPU human name consists only of numeric characters and spaces the application fails to load properly. The background and tabs will be drawn but none of the database's contents will be displayed. This will not cause any issue when compiling only in the display.

Windows build support

Add support for building on Windows so it is easier for the filthy Windows users to contribute, as fucked up as that may sound. Main thing that needs to be done is a batch equivalent of build/build.bash. Looked into batsh but doesn't seem sufficient (no way to get command line args, no redirection, etc).

Make mobile better

Make the side-switching arrow inside of a floating circle, to give more space for the table and possibly decrease claustrophobia.

EDIT: and also decrease font size, margins, and padding to allow comfortable comparison of many parts, using Browserstack to judge how big things will be on a phone.

Amelioring the security of your website

It has a very poor mark (F) in the Mozilla Observatory https://observatory.mozilla.org/analyze.html?host=specdb.markasoftware.com

  • Content Security Policy Content Security Policy (CSP) header not implemented
  • HTTP Public Key Pinning HTTP Public Key Pinning (HPKP) header not implemented
  • HTTP Strict Transport Security HTTP Strict Transport Security (HSTS) header not implemented
  • (⚠️ CRITICAL ⚠️) Redirection Does not redirect to an https site
  • Referrer Policy Referrer-Policy header not implemented
  • Subresource Integrity Subresource Integrity (SRI) not implemented, but all external scripts are loaded over https
  • X-Content-Type-Options X-Content-Type-Options header not implemented
  • X-Frame-Options X-Frame-Options (XFO) header not implemented
  • X-XSS-Protection X-XSS-Protection header not implemented

Add search feature

Search bar will probably go in upper-right corner or so, might expand to get rid of breadcrumbs list, then parts will appear below. Will be a simple must-match-all-words search for maximum performance, but mostly because that's easy to implement. Will be implemented after initial release.

Better date support

Support quarters, perhaps even more vague stuff like halves or years. Will require changes to comparison algorithm.

Advanced search

In a nut shell being able to search for a component based on a feature of it ( ex socket chipset, instructions). As well as a way to limit the search to various things as the database grows

Table Sections Buttons

Either make identical rows button work, or remove, and possibly add search feature. Remove advanced rows button.

Selection boxes do not adjust size for larger contents

The selection boxes dont scale for larger contents , this means their contents overflow down in to other selection boxes misaligning the text they contain. Attached is a pic to show how it looks, hopefully at least if it gets added property. ( Kinda on mobile atm)
screenshot_20170729-021200

Error checking

Add basic error checking for issues with yamls to aid new developers.

Setting xfr support or unlocked to false outside of the base CPU yaml file breaks the application page

When using a inherited yaml file to set these methods to false the interface of the application misbehaves. Ex Ryzen-inherit. These actions include: Breaking the advance settings tab so that clicking on it does nothing, failing to refresh the applications compare page, preventing the user from navigating the application. Loading a properly functioning CPU into compare negates the issues caused by this until it is removed. This at the moment can be bypassed by setting those settings directly in the cpu's yaml file. Ex R5 1600X

(Beta) Show all matches in search breaks the site.

When using the search function on the beta site, if show all results is clicked the site fails to update until reloaded. These issues include, failure to update comparison after the first part selected, failure to update search, failure to show search subcategories , and failure to exit search. The url is updated how ever with the new url, but is never loaded.
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.