|
1 | | -# Planka |
2 | | -#### Elegant open source project tracking. |
| 1 | +# Projets |
3 | 2 |
|
4 | | -   |
| 3 | +Projets is the project management tool for [La Suite territoriale](https://suiteterritoriale.anct.gouv.fr/). |
5 | 4 |
|
6 | | - |
| 5 | +Built on [Planka](https://github.com/plankanban/planka), it provides a customized Kanban-style interface designed specifically for teams managing territorial and digital transformation projects. |
7 | 6 |
|
8 | | -[**Client demo**](https://plankanban.github.io/planka) (without server features). |
| 7 | + |
| 8 | +![License]() |
9 | 9 |
|
10 | | -## Features |
| 10 | +[](https://my.scalingo.com/deploy?source=https://github.com/suitenumerique/st-projects) |
11 | 11 |
|
12 | | -- Create projects, boards, lists, cards, labels and tasks |
13 | | -- Add card members, track time, set due dates, add attachments, write comments |
14 | | -- Markdown support in card description and comments |
15 | | -- Filter by members and labels |
16 | | -- Customize project backgrounds |
17 | | -- Real-time updates |
18 | | -- Internal notifications |
19 | | -- Multiple interface languages |
20 | | -- Single sign-on via OpenID Connect |
| 12 | +## 🎯 Features |
21 | 13 |
|
22 | | -## How to deploy Planka |
| 14 | +- **Project Management**: Create projects, boards, lists, cards, labels, and tasks |
| 15 | +- **Collaboration**: Add card members, track time, set due dates, add attachments, write comments |
| 16 | +- **Rich Content**: Markdown support in card descriptions and comments |
| 17 | +- **Filtering**: Filter by members and labels |
| 18 | +- **Real-time Updates**: Live synchronization across all clients |
| 19 | +- **Notifications**: Internal notification system |
| 20 | +- **Internationalization**: Multiple interface languages (French, English) |
| 21 | +- **Single Sign-On**: OpenID Connect (OIDC) authentication via Keycloak |
| 22 | +- **Modern UI**: Built with React and modern design components |
23 | 23 |
|
24 | | -There are many ways to install Planka, [check them out](https://docs.planka.cloud/docs/intro). |
| 24 | +## 🏗️ Architecture |
25 | 25 |
|
26 | | -For configuration, please see the [configuration section](https://docs.planka.cloud/docs/category/configuration). |
| 26 | +Projets is a full-stack application with the following components: |
27 | 27 |
|
28 | | -## Mobile app |
| 28 | +### Frontend (`client/`) |
29 | 29 |
|
30 | | -Here is the [mobile app repository](https://github.com/LouisHDev/planka_app) maintained by the community, where you can build an app for iOS and Android. |
| 30 | +- **Framework**: React 19 with Redux for state management |
| 31 | +- **UI Libraries**: |
| 32 | + - @gouvfr-lasuite/ui-kit |
| 33 | + - @openfun/cunningham-react |
| 34 | +- **Key Features**: |
| 35 | + - Redux-Saga for side effects |
| 36 | + - Redux-ORM for data modeling |
| 37 | + - React Router for navigation |
| 38 | + - Socket.io client for real-time updates |
| 39 | + - i18next for internationalization |
31 | 40 |
|
32 | | -Alternatively, you can download the [Android APK](https://github.com/LouisHDev/planka_app/releases/latest/download/app-release.apk) directly. |
| 41 | +### Backend (`server/`) |
33 | 42 |
|
34 | | -If you have an iOS device and would like to test the app, you can join [TestFlight](https://testflight.apple.com/join/Uwn41eY4) (limited to 200 participants). |
| 43 | +- **Framework**: Sails.js (Node.js MVC framework) |
| 44 | +- **Database**: PostgreSQL with Knex.js query builder |
| 45 | +- **Authentication**: OpenID Connect (OIDC) via Keycloak |
| 46 | +- **Real-time**: Socket.io for WebSocket connections |
| 47 | +- **File Storage**: AWS S3 compatible storage for attachments |
35 | 48 |
|
36 | | -## Contact |
| 49 | +### Infrastructure |
37 | 50 |
|
38 | | -- If you want to get a hosted version of Planka, you can contact us via email contact@planka.cloud |
39 | | -- For any security issues, please do not create a public issue on GitHub, instead please write to security@planka.cloud |
| 51 | +- **Database**: PostgreSQL 16 |
| 52 | +- **Authentication Server**: Keycloak (OIDC provider) |
| 53 | +- **Reverse Proxy**: Nginx |
| 54 | +- **Containerization**: Docker & Docker Compose |
40 | 55 |
|
41 | | -We do NOT offer any public support via email, please use GitHub. |
| 56 | +## 📋 Prerequisites |
42 | 57 |
|
43 | | -## Development |
| 58 | +Before you begin, ensure you have the following installed: |
44 | 59 |
|
45 | | -See the [development section](https://docs.planka.cloud/docs/Development). |
| 60 | +- **Docker** (version 20.10 or later) |
| 61 | +- **Docker Compose** (version 2.0 or later) |
| 62 | +- **Node.js** 22 (for local development without Docker) |
| 63 | +- **npm** or **yarn** (for local development) |
46 | 64 |
|
47 | | -## Tech stack |
| 65 | +## 🚀 Quick Start |
48 | 66 |
|
49 | | -- React, Redux, Redux-Saga, Redux-ORM, Semantic UI React, react-beautiful-dnd |
50 | | -- Sails.js, Knex.js |
51 | | -- PostgreSQL |
| 67 | +### Using Docker (Recommended) |
52 | 68 |
|
53 | | -## License |
| 69 | +The easiest way to get started is using the provided Makefile: |
54 | 70 |
|
55 | | -Planka is [AGPL-3.0 licensed](https://github.com/plankanban/planka/blob/master/LICENSE). |
| 71 | +```bash |
| 72 | +make bootstrap |
| 73 | +``` |
56 | 74 |
|
57 | | -## Contributors |
| 75 | +This will: |
58 | 76 |
|
59 | | -[](https://github.com/plankanban/planka/graphs/contributors) |
| 77 | +1. Start all Docker services (PostgreSQL, Keycloak, Server, Client, Nginx) |
| 78 | +2. Wait for services to be ready |
| 79 | +3. Initialize the database with migrations and seeds |
| 80 | +4. Create a default admin user |
| 81 | + |
| 82 | +After setup completes, access the application at: |
| 83 | + |
| 84 | +- **Application**: http://localhost:3000 |
| 85 | +- **Keycloak Admin Console**: http://localhost:8080 (admin/admin) |
| 86 | + |
| 87 | +### Manual Docker Setup |
| 88 | + |
| 89 | +If you prefer to use Docker Compose directly: |
| 90 | + |
| 91 | +```bash |
| 92 | +# Start all services |
| 93 | +docker-compose -f docker-compose-dev.yml up -d |
| 94 | + |
| 95 | +# Wait for services to be ready, then initialize database |
| 96 | +make keycloak-wait |
| 97 | +make init-db |
| 98 | +``` |
| 99 | + |
| 100 | +### Local Development (Without Docker) |
| 101 | + |
| 102 | +For local development without Docker: |
| 103 | + |
| 104 | +```bash |
| 105 | +# Install dependencies |
| 106 | +npm install |
| 107 | + |
| 108 | +# Set up environment variables |
| 109 | +cp server/.env.sample server/.env |
| 110 | +# Edit server/.env with your configuration |
| 111 | + |
| 112 | +# Initialize database |
| 113 | +npm run server:db:init |
| 114 | + |
| 115 | +# Start development servers |
| 116 | +npm start |
| 117 | +``` |
| 118 | + |
| 119 | +This will start both the server (port 3000) and client (port 3001) concurrently. |
| 120 | + |
| 121 | +## 🐳 Docker Services |
| 122 | + |
| 123 | +The development environment includes: |
| 124 | + |
| 125 | +- **postgres**: PostgreSQL 16 database (port 5433) |
| 126 | +- **keycloak-db**: PostgreSQL database for Keycloak |
| 127 | +- **keycloak**: Keycloak authentication server (port 8080) |
| 128 | +- **server**: Sails.js backend server |
| 129 | +- **client**: React development server |
| 130 | +- **proxy**: Nginx reverse proxy (port 3000) |
| 131 | +- **init-db**: One-time database initialization service |
| 132 | + |
| 133 | +## 📚 Additional Resources |
| 134 | + |
| 135 | +- [Planka Documentation](https://docs.planka.cloud/) |
| 136 | +- [Sails.js Documentation](https://sailsjs.com/documentation) |
| 137 | +- [React Documentation](https://react.dev/) |
| 138 | +- [Keycloak Documentation](https://www.keycloak.org/documentation) |
| 139 | + |
| 140 | +## License 📝 |
| 141 | + |
| 142 | +This work is released under the MIT License (see [LICENSE](https://github.com/suitenumerique/messages/blob/main/LICENSE)). |
| 143 | + |
| 144 | +While Projets is a public-driven initiative, our license choice is an invitation for private sector actors to use, sell and contribute to the project. |
| 145 | + |
| 146 | +## 📧 Contact |
| 147 | + |
| 148 | +For questions or issues: |
| 149 | + |
| 150 | +- **GitHub Issues**: Use the repository's issue tracker |
| 151 | +- **Security Issues**: Please report security vulnerabilities privately |
| 152 | + |
| 153 | +## Gov ❤️ open source |
| 154 | + |
| 155 | +Projets is currently led by the French [ANCT](https://anct.gouv.fr/) for use in [La Suite territoriale](https://suiteterritoriale.anct.gouv.fr/). |
| 156 | + |
| 157 | +We are welcoming new partners and contributors to join us in this effort! So please [get in touch](mailto:contact@suite.anct.gouv.fr) if you want to help! |
0 commit comments