{"id":16820961,"url":"https://github.com/ovidiuch/aufond","last_synced_at":"2025-03-22T03:31:40.160Z","repository":{"id":6866720,"uuid":"8115657","full_name":"ovidiuch/aufond","owner":"ovidiuch","description":"A résumé for the modern age","archived":false,"fork":false,"pushed_at":"2014-01-18T14:18:07.000Z","size":5172,"stargazers_count":77,"open_issues_count":13,"forks_count":17,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-04-14T12:10:38.801Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/ovidiuch.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}},"created_at":"2013-02-09T21:55:00.000Z","updated_at":"2020-08-22T15:11:44.000Z","dependencies_parsed_at":"2022-09-18T10:53:03.451Z","dependency_job_id":null,"html_url":"https://github.com/ovidiuch/aufond","commit_stats":null,"previous_names":["ovidiuch/aufond","skidding/aufond"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovidiuch%2Faufond","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovidiuch%2Faufond/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovidiuch%2Faufond/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ovidiuch%2Faufond/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ovidiuch","download_url":"https://codeload.github.com/ovidiuch/aufond/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244902929,"owners_count":20529114,"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":[],"created_at":"2024-10-13T10:58:40.412Z","updated_at":"2025-03-22T03:31:38.126Z","avatar_url":"https://github.com/ovidiuch.png","language":"JavaScript","readme":"aufond\n===\nA résumé for the modern age\n\n### Mission\n\n\"An elegant and straightforward way to exhibit your lifelong achievements.\" — Visit the [app homepage](http://aufond.me) for more product info.\n\n## Structure\n\nSince __[Meteor.js](http://www.meteor.com/)__ provides tight conventions for [structuring your app](http://docs.meteor.com/#structuringyourapp), most of the app is structured the way you'd expect if from a Meteor project.\n\nThere are two abstractions that stand out the most:\n\n- [ReactiveTemplate](https://github.com/skidding/aufond/blob/master/client/lib/core/reactive-template.coffee) - Widget-like component that encapsulates the logic related to a template, making use of the reactive programming concept and the powerful [Deps](http://docs.meteor.com/#deps) API\n- [MeteorModel](https://github.com/skidding/aufond/blob/master/lib/meteor-model.coffee) - Agnostic model wrapper for the [Meteor.Collections](http://docs.meteor.com/#collections) with a common ORM interface\n\nAlso notable is that the entire app is written in CoffeeScript.\n\n### Entry point\n\nThe [app router](https://github.com/skidding/aufond/blob/master/client/router.coffee) is built on top of [Backbone.Router](http://backbonejs.org/#Router). It is intertwined with a [global controller](https://github.com/skidding/aufond/blob/master/client/controller.coffee), which manages the changing of one controller (page layout) to another. The entire client app starts when `Router.start()` is [called](https://github.com/skidding/aufond/blob/master/client/controller.coffee#L16), when this global controller is initialized, which happens because of [its placement in the index.html layout.](https://github.com/skidding/aufond/blob/master/client/index.html#L25)\n\n## Installation\n\n### Requirements\n\n- [node.js](http://nodejs.org/) - JS platform on top of which Meteor.js is built\n- [Meteor.js](http://docs.meteor.com/) - The framework at the heart of the application\n- [PhantomJS](http://phantomjs.org/) - Used to [serve crawlable pages through the Spiderable package](http://www.meteor.com/blog/2012/08/09/search-engine-optimization) and to render static .pdf exports\n\n### Running locally\n\naufond is as easy to start as any other Meteor app. Just run `meteor` from the repo root.\n\n#### Settings\n\nA JSON settings file can be loaded using the `--settings` option. E.g. `meteor --settings settings.json`\n\nThe settings file is not versioned needs to be created, using the [settings.example.json scheleton.](https://github.com/skidding/aufond/blob/master/settings.example.json)\n\n### Running in the cloud\n\nRun this on a linux machine, in production environment. — [aufond.me](http://aufond.me) works on Debian 7 (Wheezy)\n\n```bash\n# Define the path where the project will be situated\necho \"export AUFOND_PATH='/var/www/aufond'\" \u003e\u003e ~/.bashrc \u0026\u0026 source ~/.bashrc\n\n# $AUFOND_PATH will always be defined on this machine, for this user\nmkdir -p $AUFOND_PATH \u0026\u0026 cd $AUFOND_PATH\n\n# Ensure Git is installed and fetch the aufond repo for the install script\naptitude install -y git \u0026\u0026 git clone https://github.com/skidding/aufond.git .\n\n# Setup project\nscript/install.sh\n```\n\n#### Bundling and starting in production\n\n```bash\n# Create Meteor bundle\nscript/bundle.sh\n\n# Start bundled Meteor app on localhost, port 80. If a process is already\n# running on this port, its PID will be displayed instead; this is useful for\n# killing that process and restarting the app\nscript/start.sh\n\n# Start app on a specific port\nscript/start.sh -p 3000\n\n# Start app for a specific hostname. The hostname is used as the value for the\n# ROOT_URL environment variable of Meteor. It's used by the framework to\n# generate internal URLs\nscript/start.sh -h aufond.me\n\n# Specify the Mongo connection (the start script defaults to a guest db hosted\n# at MongoHQ)\nscript/start.sh -m mongodb://guest:aufond1234@paulo.mongohq.com:10016/aufond_guest\n```\n\nDon't forget to replicate the settings.json file you're using locally. It will be [picked up and included automatically by the start.sh script,](https://github.com/skidding/aufond/blob/e05ed7287340c1b9c97d226c825b8ed88c70c4ed/script/start.sh#L60) from the root project folder.\n\n### Importing data\n\nThere are [a few dumps](https://github.com/skidding/aufond/tree/master/private/mongo-dump) included the project if you want to start off with some data after installing the app. Considering that the local Mongo connection used by Meteor defaults to running on the 3002 port, here is a command line example for quickly importing a user with timeline entries:\n\n```bash\nmongoimport -h 127.0.0.1:3002 -d meteor -c users --file private/mongo-dump/sivers.user.json\nmongoimport -h 127.0.0.1:3002 -d meteor -c entries --file private/mongo-dump/sivers.entries.json\n```\n\nYou can now check out [localhost:3000/sivers](http://localhost:3000/sivers) to display the imported data beautifully.\n\n#### Exporting\n\nAs a reference, here's how the exporting is done using the opposite Mongo utility, mongoexport:\n\n```bash\nmongoexport -h paulo.mongohq.com:10016 -u guest -p aufond1234 -d aufond_guest -c users -q '{username: \"sivers\"}' -o sivers.user.json\nmongoexport -h paulo.mongohq.com:10016 -u guest -p aufond1234 -d aufond_guest -c entries -q '{createdBy: \"XDX52YC3jBPmbsiZS\"}' -o sivers.entries.json\n```\n\n#### Root user\n\nA root user can list all the other users with extended information and can overall do more actions with the help of [a few extra tabs in the admin section.](https://github.com/skidding/aufond/blob/master/client/controller/admin/admin-tabs.html#L6-L10) Making a regular user root is rather manual and requires direct Mongo access. E.g.\n\n```mongo\ndb.users.update({username:'test'}, {$set: {isRoot: true}})\n```\n\n### PhantomJS dry run\n\naufond uses PhantomJS to generate static exports of your timeline, but you can play with or debug the script manually, from the command line. Note that it has a few [particularities](https://github.com/skidding/aufond/blob/master/server/.phantomjs/export-pdf.js) relevant to the timeline layout.\n\n```bash\nphantomjs server/.phantomjs/export-pdf.js http://google.com google.pdf\n```\n","funding_links":[],"categories":["📦 Legacy \u0026 Inactive Projects"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovidiuch%2Faufond","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fovidiuch%2Faufond","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fovidiuch%2Faufond/lists"}