{"id":20001793,"url":"https://github.com/pranavagiligar/velocity","last_synced_at":"2026-05-04T15:42:31.314Z","repository":{"id":101937997,"uuid":"245184159","full_name":"pranavagiligar/velocity","owner":"pranavagiligar","description":"Event management system","archived":false,"fork":false,"pushed_at":"2020-04-11T20:06:54.000Z","size":126,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-12T13:14:27.676Z","etag":null,"topics":["event-management-system","gradle","intelij","java","jwt-authentication","kotlin","mongodb","rest-api","spring-boot-2","spring-security","swagger"],"latest_commit_sha":null,"homepage":"https://pranavagiligar.github.io/velocity/","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pranavagiligar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2020-03-05T14:27:25.000Z","updated_at":"2024-11-09T15:07:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"e66c35e7-e311-45f5-89d4-c9d658d685ae","html_url":"https://github.com/pranavagiligar/velocity","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranavagiligar%2Fvelocity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranavagiligar%2Fvelocity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranavagiligar%2Fvelocity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pranavagiligar%2Fvelocity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pranavagiligar","download_url":"https://codeload.github.com/pranavagiligar/velocity/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241439791,"owners_count":19963098,"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":["event-management-system","gradle","intelij","java","jwt-authentication","kotlin","mongodb","rest-api","spring-boot-2","spring-security","swagger"],"created_at":"2024-11-13T05:18:42.525Z","updated_at":"2026-05-04T15:42:26.291Z","avatar_url":"https://github.com/pranavagiligar.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"![velocity-CI](https://github.com/pranavagiligar/velocity/workflows/velocity-CI/badge.svg)\n\nEvent management system - This can manage generic events defined by user and communicate this with subscribers\n\n---\n\nPlease refer [Wiki](https://github.com/pranavagiligar/velocity/wiki) or [GithubIO](https://pranavagiligar.github.io/velocity/) for better readablity\n\n---\n\n**Setup**\n1. Install free [IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/#section=mac) and opt for Kotlin in it \n2. [Clone](https://github.com/pranavagiligar/demospring.git) this repository\n3. Setup MongoDB server. Easy one is to get free MongoDB database in a hosted server from [HERE](https://account.mongodb.com/account/login)\n   - Get setup of cloud MongoDB(Atlas) [HERE](docs/CLOUD_MONGODB_SETUP.md)   \n4. Building the project\n    1. For Windows: Open the Command prompt in the project directory\n        * run the command `gradlew.bat clean bootRun`\n    2. For Linux or Mac: Open the Terminal emulator in the project directory\n        * run command `./gradlew clean bootRun`\n        \n             Note: In case you just want to generate JAR file, replace `bootRun` with `bootJar` or `build`\n        \n    3. Running the jar can be done using command `java -jar -Ddebug=true build/libs/velocity_{version}_{yyMMddHHmm}/server-{version}.jar`\n       - example: \n\n        ```\n        pranava@ubuntu:~/velocity$ pwd\n        /home/pranava/velocity\n        \n        pranava@ubuntu:~/velocity$ ./gradlew clean build\n        \u003e Task :compileKotlin\n        BUILD SUCCESSFUL in 3s\n        5 actionable tasks: 5 executed\n        \n        pranava@ubuntu:~/velocity$ java -jar -Ddebug=true build/libs/velocity_0.0.1-SNAPSHOT_2003102238/server-0.0.1-SNAPSHOT.jar\n          Spring Boot         (v2.2.4.RELEASE)\n      \n        embedded.tomcat.TomcatWebServer    : Tomcat started on port: 80 (http) with context path '/api'\n        com.velocity.VelocityApplicationKt : Started VelocityApplicationKt in 4.256 seconds\n       ```\n       \n       If you are seeing _Tomcat Started_ and _Started VelocityApplicationKt_, means project successfully built and running on _**port 80**_\n       Note: `-Ddebug=true` switch is temporary. Future commits would include Custom Run configuration file. \n  \n 5. Insert roles into `roles` collection in MongoDB.\n \n    ```\n    db.roles.insertMany([\n       { name: \"ROLE_USER\" },\n       { name: \"ROLE_MODERATOR\" },\n       { name: \"ROLE_ADMIN\" },\n    ])\n    ```\n    Note: Currently this is manual step. In future this might be done through an API \n   \n 6. Running the project: Open a web browser and open `http://localhost/api/server/info` which will show a welcome page\n \n    ##### Note: This Project needs Java 8/11\n \n---\n\n**Configurations**\n1. The _`application.properties`_ file contains the line\n`spring.data.mongodb.uri=${MONGO_URL_CON}`\nin which `MONGO_URL_CON` is the MongoDB database URL of the MongoDB server which is the system environment variable\n\n   #####  Find the steps to set `MONGO_URL_CON` as system environment variable in [HERE](docs/ENV_CONFIG.md)\n   \n2. Like `MONGO_URL_CON` environment variable setup, `JWT_SECRET_KEY` also need to be set as environment variable. The key is any string which represent as encryption password\n\n3. The `application.properties` has a key called `com.velocity.jwtExpirationMs` which represents JWT expiration time in milliseconds. Default is 1-Day(86400000 ms)\n\n4. The port number of the server can be configured in _`application.properties`_ file. Default port number is port `80`\n\n5. Postman collection 2.1 can be found in `velocity/docs/velocity.postman_collection.json`\n\n---\n\n**Project structure**\n\nThe current project structure is just a draft. After getting comfortable with Spring, package refactor will be done.\n\n    ```\n    pranava@ubuntu:~/velocity/src/main$ pwd\n    /user/pranava/velocity/src/main\n    pranava@ubuntu:~/velocity/src/main$ tree\n    \n    .\n    ├── java                                        # Java files\n    ├── kotlin                                      # Kotlin files\n    │   └── com                                     \n    │       └── velocity                                        \n    │           ├── VelocityApplication.kt          # Main class                      \n    │           ├── config                          # DB configs. (Temporary)        \n    │           │   └── MongoConfig.kt                                 \n    │           ├── controller                      # Entry point of API (Apart from filters)              \n    │           │   ├── AuthController.kt                                  \n    │           │   └── UserController.kt                                   \n    │           ├── dao                             # Access point for all repository (DB and network calls)    \n    │           ├── db                              # Datebase     \n    │           │   ├── doc                         # Collection models        \n    │           │   └── repo                        # Base Reposiotries to access collections            \n    │           ├── model                                   \n    │           │   ├── ERole.kt                    # Static predefined roles               \n    │           │   └── payload                     # Request/Response models            \n    │           │       ├── request                 # Request models                 \n    │           │       └── response                # Response models                     \n    │           ├── security                        # Spring security related modules            \n    │           │   ├── WebSecurityConfig.kt        # Route - authentication/authorization configs                            \n    │           │   ├── jwt                         # JWT related classes         \n    │           │   └── service                     # Secuirty support services (UserDetailsService implementations)           \n    │           └── service                         # Application business logics       \n    └── resources                                   # All the Spring configuration files\n        └── application.properties                  # Application properties (Like MongoDB connection URL, JWT secret key)\n        \n    ```\n\n---\n\n**Learning resources**\n+ [Quickstart](https://spring.io/quickstart)\n+ [Quides](https://spring.io/guides)\n+ [Kotlin documentation](https://kotlinlang.org/docs/reference/)\n+ [SpringBoot using Kotlin Example-1](https://spring.io/guides/tutorials/spring-boot-kotlin/)\n+ [SpringBoot using Kotlin Example-2](https://developer.okta.com/blog/2019/09/17/build-a-spring-boot-kotlin-app)\n+ [SpringBoot with MongoDB CRUDs](https://www.devglan.com/spring-boot/spring-boot-mongodb-crud)\n+ [SpringBoot demo project using MongoDB](https://github.com/spring-guides/tut-spring-boot-kotlin)\n+ [Access MongoDB data](https://spring.io/guides/gs/accessing-data-mongodb/)\n+ [SpringBoot with Spring-Security, MongoDB and JWT authentication and authorization](https://bezkoder.com/spring-boot-jwt-auth-mongodb/)\n+ [SpringBoot with JWT Authentication using Spring Security](https://auth0.com/blog/implementing-jwt-authentication-on-spring-boot/)\n+ [JWT](https://jwt.io/introduction/)\n\n---\n\n**Keywords**\n+ Spring Boot 2.2.4\n+ Spring Security\n+ Kotlin\n+ Java 8/11\n+ MongoDB\n+ JWT\n+ Gradle \n+ REST API\n\n---\n\nProject Velocity -\n[Copyright (c) 2020 Pranava Giligar](https://github.com/pranavagiligar/velocity/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpranavagiligar%2Fvelocity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpranavagiligar%2Fvelocity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpranavagiligar%2Fvelocity/lists"}