La plateforme francophone de partage de liens tech pour les hackers, développeurs et passionnés
Journal du hacker est un agrégateur de liens communautaire axé sur l'informatique et le hacking (au sens noble du terme). Inspiré de Lobsters et Hacker News, il offre un espace francophone pour partager et discuter d'articles techniques, de projets open source, et de sujets liés au développement logiciel.
- 🔗 Soumission de liens avec preview automatique et détection de doublons
- 💬 Commentaires hiérarchiques avec threading infini
- ⬆️ Système de vote avec raisons pour les downvotes
- 🏷️ Tags et filtres pour organiser le contenu
- 🔍 Recherche full-text sur les stories et commentaires
- 👤 Profils utilisateurs avec karma et historique
- 🎩 Système de "hats" (chapeaux) pour contextualiser les commentaires
- ✉️ Messages privés entre utilisateurs
- 🎫 Invitations pour contrôler la croissance de la communauté
- 🛡️ Outils de modération complets
- 📧 Réponse par email aux commentaires
- 🌐 API JSON pour intégrations tierces
La façon la plus rapide de démarrer le projet en local :
# Clone le repository
git clone https://github.com/journalduhacker/journalduhacker.net.git
cd journalduhacker
# Lance avec Docker Compose (la config DB est déjà gérée !)
docker-compose up -d
# Crée la base de données et les seeds
docker-compose exec web bundle exec rake db:setup
# Le site est disponible sur http://localhost:3000
# Login par défaut : test / testNote : Avec Docker,
config/database.ymlutilise automatiquement les variables d'environnement définies dansdocker-compose.yml. Aucune configuration manuelle nécessaire !
- Ruby 2.0.0+ (testé avec 1.9.3, 2.0.0, 2.1.0, 2.3.0)
- MariaDB ou MySQL 5.7+
- Bundler 2.x
- Node.js (pour les assets)
- Clone le repository
git clone https://github.com/journalduhacker/journalduhacker.net.git
cd journalduhacker- Installe les dépendances
bundle install- Configure la base de données
Le fichier config/database.yml existe déjà et utilise des variables d'environnement. Tu peux soit :
Option A - Définir les variables d'environnement :
export DATABASE_USER=root
export DATABASE_PASSWORD=your_password
export DATABASE_HOST=localhostOption B - Modifier directement config/database.yml (lignes 7-10) :
development:
username: root
password: your_password
host: localhost # ou le chemin socket: /tmp/mysql.sock- Crée la base de données
bundle exec rake db:setupCela va :
- Créer la base de données
- Charger le schéma
- Créer un utilisateur de test (
test/test) - Créer un tag de test
- Configure le secret token
Génère un token secret :
bundle exec rake secretCrée config/initializers/secret_token.rb :
Lobsters::Application.config.secret_key_base = 'your_generated_secret_here'- Configure ton site (optionnel)
Crée config/initializers/production.rb :
class << Rails.application
def domain
"localhost:3000"
end
def name
"Journal du hacker"
end
end
Rails.application.routes.default_url_options[:host] = Rails.application.domain- Lance le serveur
bundle exec rails serverOuvre http://localhost:3000 et connecte-toi avec test / test 🎉
Le projet utilise RSpec pour les tests :
# Lance tous les tests
bundle exec rspec
# Lance un fichier spécifique
bundle exec rspec spec/models/user_spec.rb
# Lance un test spécifique
bundle exec rspec spec/models/user_spec.rb:10journalduhacker/
├── app/
│ ├── controllers/ # Contrôleurs Rails
│ ├── models/ # Modèles ActiveRecord
│ ├── views/ # Templates ERB
│ ├── assets/ # CSS, JS, images
│ └── mailers/ # Emails
├── config/ # Configuration Rails
├── db/
│ ├── migrate/ # Migrations de base de données
│ └── schema.rb # Schéma actuel
├── spec/ # Tests RSpec
├── docker-compose.yml # Configuration Docker
└── Dockerfile # Image Docker
- Framework : Ruby on Rails 4.2.8
- Base de données : MariaDB/MySQL avec full-text search
- Frontend : jQuery, CSS vanilla
- Server : Unicorn (production)
- Email : ActionMailer avec parsing d'emails entrants
- Authentification : bcrypt + TOTP 2FA (optionnel)
Les contributions sont les bienvenues ! Voici comment participer :
- Fork le projet
- Crée une branche pour ta feature (
git checkout -b feature/amazing-feature) - Commit tes changements (
git commit -m 'Add amazing feature') - Push sur ta branche (
git push origin feature/amazing-feature) - Ouvre une Pull Request
- Respecte le style de code existant
- Ajoute des tests pour les nouvelles fonctionnalités
- Mets à jour la documentation si nécessaire
- Utilise des messages de commit descriptifs
Pour plus de détails, consulte CONTRIBUTING.md.
Ce projet est sous double licence :
- Nouveau code (depuis le 8 novembre 2016) : AGPLv3 - © 2016-2017 Carl Chenet
- Code original (jusqu'au 3 novembre 2016) : 3-BSD License - © 2012-2016 Joshua Stein (Lobsters)
Le code original de Lobsters est disponible sur github.com/lobsters/lobsters.
- Joshua Stein pour avoir créé Lobsters
- La communauté Journal du hacker pour ses contributions
- Tous les contributeurs qui ont rendu ce projet possible
Fait avec ❤️ pour la communauté francophone des hackers