{"id":15616414,"url":"https://github.com/texpert/florsan","last_synced_at":"2025-08-16T10:48:59.760Z","repository":{"id":36963922,"uuid":"267574748","full_name":"texpert/florsan","owner":"texpert","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-12T13:20:14.000Z","size":10178,"stargazers_count":3,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-12T13:28:44.189Z","etag":null,"topics":["bootstrap","camaleon-cms","postgresql","ruby","ruby-on-rails"],"latest_commit_sha":null,"homepage":"https://florsan.md","language":"SCSS","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/texpert.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2020-05-28T11:43:52.000Z","updated_at":"2025-08-12T11:14:07.000Z","dependencies_parsed_at":"2023-12-25T07:31:50.736Z","dependency_job_id":"8502fc86-ad9d-4fc9-8931-ff873cb91903","html_url":"https://github.com/texpert/florsan","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/texpert/florsan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texpert%2Fflorsan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texpert%2Fflorsan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texpert%2Fflorsan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texpert%2Fflorsan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/texpert","download_url":"https://codeload.github.com/texpert/florsan/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/texpert%2Fflorsan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270702479,"owners_count":24630873,"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","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["bootstrap","camaleon-cms","postgresql","ruby","ruby-on-rails"],"created_at":"2024-10-03T07:08:09.357Z","updated_at":"2025-08-16T10:48:59.752Z","avatar_url":"https://github.com/texpert.png","language":"SCSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Maintainability](https://api.codeclimate.com/v1/badges/0c4a2c179abd96826e02/maintainability)](https://codeclimate.com/github/texpert/florsan/maintainability)\n\n# README\n\n* Ruby version: 3.4.4\n\n* Rails version: 8.0.2.1\n\n* Only for running ESLint and stylelint\n  * Node JS (used only for running ESLint and stylelint) version: 22.16.0\n  * Yarn 4.9.2\n\n* System dependencies\n\n* Configuration\n\n\u003e ### 💡 Note: Multi environment credentials\n\nTo edit the credentials file, run `EDITOR=\"nano\" rails credentials:edit`. This command will create the credentials file\nthe `config/master.key` if there is no such file, and, also, the `config/credentials.yml.enc`if it does not exist. \n\nThe `master.key` should be provisioned to the Rails app as the `RAILS_MASTER_KEY` environment variable by the hosting \nplatform (Heroku).\n\nOther credentials, including the `secret_key_base`, are typically stored in the encrypted files  per environment in the \n`config/credentials` folder. These encrypted files could be edited, running in the terminal the following command:\n\n```shell\n$ EDITOR=\"nano\" rails credentials:edit --environment=development\n```\n\n* Database creation\n\n* Database initialization\n\n* How to run the test suite\n\n* Services (job queues, cache servers, search engines, etc.)\n\n* Deployment instructions: `git push heroku main` or `git push heroku branchname:main`\n\n## TODO: remove public read access\n\nAWS bucket policy is `public read` until [the issue in Camaleon CMS will get solved](https://github.\ncom/owen2345/camaleon-cms/issues/955)\n\nCurrent bucket policy:\n\n```\n{\n    \"Version\": \"2012-10-17\",\n    \"Id\": \"Policy1590871751896\",\n    \"Statement\": [\n        {\n            \"Sid\": \"Stmt1590871689636\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"AWS\": \"arn:aws:iam::Account-ID:user/username\"\n            },\n            \"Action\": [\n                \"s3:DeleteObject\",\n                \"s3:DeleteObjectTagging\",\n                \"s3:DeleteObjectVersion\",\n                \"s3:DeleteObjectVersionTagging\",\n                \"s3:GetObject\",\n                \"s3:GetObjectAcl\",\n                \"s3:GetObjectTagging\",\n                \"s3:GetObjectVersion\",\n                \"s3:GetObjectVersionAcl\",\n                \"s3:GetObjectVersionForReplication\",\n                \"s3:GetObjectVersionTagging\",\n                \"s3:ListBucket\",\n                \"s3:ListBucketMultipartUploads\",\n                \"s3:ListBucketVersions\",\n                \"s3:ListMultipartUploadParts\",\n                \"s3:PutObject\",\n                \"s3:PutObjectAcl\",\n                \"s3:PutObjectTagging\",\n                \"s3:PutObjectVersionAcl\",\n                \"s3:PutObjectVersionTagging\",\n                \"s3:PutReplicationConfiguration\",\n                \"s3:ReplicateDelete\",\n                \"s3:ReplicateObject\",\n                \"s3:ReplicateTags\",\n                \"s3:RestoreObject\"\n            ],\n            \"Resource\": [\n                \"arn:aws:s3:::bucketname\",\n                \"arn:aws:s3:::bucketname/*\"\n            ]\n        },\n        {\n            \"Sid\": \"Stmt1590871689636\",\n            \"Effect\": \"Allow\",\n            \"Principal\": {\n                \"AWS\": \"*\"\n            },\n            \"Action\": \"s3:GetObject\",\n            \"Resource\": \"arn:aws:s3:::bucketname/*\"\n        }\n    ]\n}\n```\n\n## Testing and profiling\n\nThe `derailed_benchmarks` gem is running performance test in `production` environment, so the `production` DB in the `config/database.yml` is pointing to the development DB.\n\nThe following specs could be run:\n\n### Static memory reports:\n\n```bash\nbundle exec derailed bundle:mem # Memory used at Require time\n\nbundle exec derailed bundle:mem development # Memory used at Require time in `development` environment\n\nbundle exec derailed bundle:objects # Objects created at Require time\n\nbundle exec derailed bundle:objects development # Objects created at Require time in `development` environment\n\n```\n\n### Dynamic profiling\n\n```bash\n$ bundle exec derailed exec --help\n  $ derailed exec perf:allocated_objects  # outputs allocated object diff after app is called TEST_COUNT times\n  $ derailed exec perf:app  # runs the performance test against two most recent commits of the current app\n  $ derailed exec perf:gc  # outputs GC::Profiler.report data while app is called TEST_COUNT times\n  $ derailed exec perf:heap  # heap analyzer\n  $ derailed exec perf:ips  # iterations per second\n  $ derailed exec perf:library  # runs the same test against two different branches for statistical comparison\n  $ derailed exec perf:mem  # show memory usage caused by invoking require per gem\n  $ derailed exec perf:mem_over_time  # outputs memory usage over time\n  $ derailed exec perf:objects  # profiles ruby allocation\n  $ derailed exec perf:stackprof  # stackprof\n  $ derailed exec perf:test  # hits the url TEST_COUNT times\n  $ derailed exec perf:heap_diff  # three heaps generation for comparison\n```\n\n### ESLint\n\nRun the following command:\n\n```bash\nyarn eslint\n```\n\n### Stylelint\n\nRun the following command:\n\n```bash\nyarn stylelint \"**/*.{css,js,scss}\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftexpert%2Fflorsan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftexpert%2Fflorsan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftexpert%2Fflorsan/lists"}