{"id":13715033,"url":"https://github.com/steemit/condenser","last_synced_at":"2025-05-14T20:09:53.263Z","repository":{"id":38274170,"uuid":"59213335","full_name":"steemit/condenser","owner":"steemit","description":"The greatest application front-end to the Steem Blockchain.","archived":false,"fork":false,"pushed_at":"2025-04-29T23:03:32.000Z","size":24073,"stargazers_count":502,"open_issues_count":284,"forks_count":430,"subscribers_count":83,"default_branch":"master","last_synced_at":"2025-04-30T00:19:01.745Z","etag":null,"topics":["jsx","react","social-network","steem","steem-blockchain","steemit"],"latest_commit_sha":null,"homepage":"https://steemit.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steemit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-05-19T14:21:06.000Z","updated_at":"2025-04-29T23:03:36.000Z","dependencies_parsed_at":"2023-02-14T19:45:54.851Z","dependency_job_id":"1758b3df-315b-4335-8424-d800cf351949","html_url":"https://github.com/steemit/condenser","commit_stats":{"total_commits":3771,"total_committers":132,"mean_commits":"28.568181818181817","dds":0.7637231503579952,"last_synced_commit":"17a0e5b6d8b2856536dd156e97133d45a56424eb"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steemit%2Fcondenser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steemit%2Fcondenser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steemit%2Fcondenser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steemit%2Fcondenser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steemit","download_url":"https://codeload.github.com/steemit/condenser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254219374,"owners_count":22034397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jsx","react","social-network","steem","steem-blockchain","steemit"],"created_at":"2024-08-03T00:00:53.216Z","updated_at":"2025-05-14T20:09:53.236Z","avatar_url":"https://github.com/steemit.png","language":"JavaScript","readme":"\n# Condenser\n\n\nCondenser is the react.js web interface to the world's first and best\nblockchain-based social media platform, steemit.com.  It uses\n[STEEM](https://github.com/steemit/steem), a blockchain powered by DPoS Governance and ChainBase DB to store JSON-based content for a plethora of web\napplications.\n\n## Why would I want to use Condenser (steemit.com front-end)?\n\n* Learning how to build blockchain-based web applications using STEEM as a\n  content storage mechanism in react.js\n* Reviewing the inner workings of the steemit.com social media platform\n* Assisting with software development for steemit.com\n\n## Installation\n\n#### Docker\n\nWe highly recommend using docker to run condenser in production. This is how we run the\nlive steemit.com site and it is the most supported (and fastest) method of\nboth building and running condenser. We will always have the latest version\nof condenser (master branch) available on Docker Hub. Configuration settings\ncan be set using environment variables (see configuration section below for\nmore information). If you need to install docker, you can get it at\nhttps://get.docker.com\n\nTo build a docker image:\n\n```bash\ndocker build -t steemit/condenser -f Dockerfile .\n```\n\nTo bring up a running container it's as simple as this:\n\n```bash\ndocker run -it -p 8080:8080 steemit/condenser\n```\n\nEnvironment variables can be added like this:\n\n```bash\ndocker run -it -e SDC_CLIENT_STEEMD_URL=\"wss://steemd.steemit.com\" -p 8080:8080 steemit/condenser\n```\n\nIf you would like to modify, build, and run condenser using docker, it's as\nsimple as pulling in the github repo and issuing one command to build it,\nlike this:\n\n```bash\ngit clone https://github.com/steemit/condenser\ncd condenser\ndocker build -t=\"myname/condenser:mybranch\" .\ndocker run -it -p 8080:8080 myname/condenser:mybranch\n```\n\n## Building from source without docker (the 'traditional' way):\n(better if you're planning to do condenser development)\n\n#### Clone the repository and make a tmp folder\n\n```bash\ngit clone https://github.com/steemit/condenser\ncd condenser\nmkdir tmp\n```\n\n#### Install dependencies\n\nInstall at least Node v8.7 if you don't already have it. We recommend using\n`nvm` to do this as it's both the simplest way to install and manage\ninstalled version(s) of node. If you need `nvm`, you can get it at\n[https://github.com/creationix/nvm](https://github.com/creationix/nvm).\n\nCondenser is known to successfully build using node 8.7, npm 5.4.2, and\nyarn 1.3.2.\n\nUsing nvm, you would install like this:\n\n```bash\nnvm install v8.7\n```\n\nWe use the yarn package manager instead of the default `npm`. There are\nmultiple reasons for this, one being that we have `steem-js` built from\nsource pulling the github repo as part of the build process and yarn\nsupports this. This way the library that handles keys can be loaded by\ncommit hash instead of a version name and cryptographically verified to be\nexactly what we expect it to be. Yarn can be installed with `npm`, but\nafterwards you will not need to use `npm` further.\n\n```bash\nnpm install -g yarn\nyarn global add babel-cli\nyarn install --frozen-lockfile\nyarn run build\n```\nTo run condenser in production mode, run:\n\n```bash\nyarn run production\n```\n\nWhen launching condenser in production mode it will automatically use 1\nprocess per available core. You will be able to access the front-end at\nhttp://localhost:8080 by default.\n\nTo run condenser in development mode, run:\n\n```bash\nyarn run start\n```\n\nIt will take quite a bit longer to start in this mode (~60s) as it needs to\nbuild and start the webpack-dev-server.\n\nBy default you will be connected to steemit.com's public steem node at\n`wss://steemd.steeemit.com`. This is actually on the real blockchain and\nyou would use your regular account name and credentials to login - there is\nnot an official separate testnet at this time. If you intend to run a\nfull-fledged site relying on your own, we recommend looking into running a\ncopy of `steemd` locally instead\n[https://github.com/steemit/steem](https://github.com/steemit/steem).\n\n#### Debugging SSR code\n\n`yarn debug` will build a development version of the codebase and then start the\nlocal server with `--inspect-brk` so that you can connect a debugging client.\nYou can use Chromium to connect by finding the remote client at\n`chrome://inspect/#devices`.\n\n#### Configuration\n\nThe intention is to configure condenser using environment variables. You\ncan see the names of all of the available configuration environment\nvariables in `config/custom-environment-variables.json`. Default values are\nstored in `config/defaults.json`.\n\nEnvironment variables using an example like this:\n\n```bash\nexport SDC_CLIENT_STEEMD_URL=\"wss://steemd.steemit.com\"\nexport SDC_SERVER_STEEMD_URL=\"wss://steemd.steemit.com\"\n```\n\nKeep in mind environment variables only exist in your active session, so if\nyou wish to save them for later use you can put them all in a file and\n`source` them in.\n\nIf you'd like to statically configure condenser without variables you can\nedit the settings directly in `config/production.json`. If you're running\nin development mode, copy `config/production.json` to `config/dev.json`\nwith `cp config/production.json config/dev.json` and adjust settings in\n`dev.json`.\n\nIf you're intending to run condenser in a production environment one\nconfiguration option that you will definitely want to edit is\n`server_session_secret` which can be set by the environment variable\n`SDC_SESSION_SECRETKEY`. To generate a new value for this setting, you can\ndo this:\n\n```bash\nnode\n\u003e crypto.randomBytes(32).toString('base64')\n\u003e .exit\n```\n\n## Style Guides For Submitting Pull Requests\n\n### File naming and location\n\n- Prefer CamelCase js and jsx file names\n- Prefer lower case one word directory names\n- Keep stylesheet files close to components\n- Component's stylesheet file name should match component name\n\n#### Js \u0026 Jsx\n\nWe use [prettier](https://github.com/prettier/prettier) to autofromat the\ncode, with [this configuration](.prettierrc). Run `yarn run fmt` to format\neverything in `src/`, or `yarn exec -- prettier --config .prettierrc\n--write src/whatever/file.js` for a specific file.\n\n#### CSS \u0026 SCSS\n\nIf a component requires a css rule, please use its uppercase name for the\nclass, e.g. \"Header\" class for the header's root div.  We adhere to BEM\nmethodology with exception for Foundation classes, here is an example for\nthe Header component:\n\n```html\n\u003c!-- Block --\u003e\n\u003cul class=\"Header\"\u003e\n  ...\n  \u003c!-- Element --\u003e\n  \u003cli class=\"Header__menu-item\"\u003eMenu Item 1\u003c/li\u003e\n  \u003c!-- Element with modifier --\u003e\n  \u003cli class=\"Header__menu-item--selected\"\u003eElement with modifier\u003c/li\u003e\n\u003c/ul\u003e\n```\n\n## Storybook\n\n`yarn run storybook`\n\n## Testing\n\n### Run test suite\n\n`yarn test`\n\nwill run `jest`\n\n### Test endpoints offline\n\nIf you want to test a server-side rendered page without using the network, do this:\n\n```\nyarn build\nOFFLINE_SSR_TEST=true NODE_ENV=production node --prof lib/server/index.js\n```\n\nThis will read data from the blobs in `api_mockdata` directory. If you want to use another set of mock data, create a similar directory to that one and add an argument `OFFLINE_SSR_TEST_DATA_DIR` pointing to your new directory.\n\n### Run blackbox tests using nightwatch\n\nTo run a Selenium test suite, start the condenser docker image with a name `condenser` (like `docker run --name condenser -itp 8080:8080 steemit/condenser:latest`) and then run the blackboxtest image attached to the condneser image's network:\n\n```\ndocker build -t=steemit/condenser-blackboxtest blackboxtest/\ndocker run --network container:condenser steemit/condenser-blackboxtest:latest\n\n```\n\n## Issues\n\nTo report a non-critical issue, please file an issue on this GitHub project.\n\nIf you find a security issue please report details to: security@steemit.com\n\nWe will evaluate the risk and make a patch available before filing the issue.\n","funding_links":[],"categories":["JavaScript","Cryptocurrencies"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteemit%2Fcondenser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteemit%2Fcondenser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteemit%2Fcondenser/lists"}