This is a beta version of a BIM Workbench for Autodesk Revit. It is a Vue frontend and a Node.js backend. The backend is a simple REST API that communicates with the Revit API. The frontend is a simple Vue.js app that allows the user to create a new project, upload a Revit file, and get the project information.
portera🚀 provides remote logs for you node apps with an awesome style :).
portera has two parts, a library that wrap your console object by default, redirecting the output to portera server, its receive your data and serve a web page where you can display an awesome output, just like that
These days I spent more time at home by corona quarantine, time to practice and learn new things. I began to do a sample project in node for the company where I work, it was something that I had have in my mind time ago. The project its a middleware between our different management programs and third part applications, this middleware should contain all bussiness logic necesary by thrird part systems.
NEngine is a skeleton project that I use to start new projects where I need to use SQL Server for the database and JWT tokens for authentication. The project is available on GitHub
It is necessary to have a SQL Server database with stored procedures to authenticate the user and generate the JWT token. The stored procedures are:
I have been working on a project that involves controlling a car with an Arduino board. The car is made of a chassis, two motors, and a battery. The motors are connected to the Arduino board through a motor driver, which allows the Arduino to control the speed and direction of the motors using a wii nunchuck as a remote control.
#include<math.h>#include"Wire.h"#include"WiiChuck.h"#include<Servo.h>#include<RHMotor.h>WiiChuck chuck =WiiChuck();
int joyX =0;
int joyY =0;
#define MOVING_MARGIN 50
#define ROTATE_MARGIN 50
int left_motor_pin =7;
int right_motor_pin =6;
RHMotor motor(left_motor_pin, right_motor_pin);
voidsetup()
{
Serial.begin(9600);
Serial.flush();
Serial.println("Initialize chuck engine.");
chuck.begin(1000);
chuck.update();
delay(1000);
Serial.println("Completed.");
Serial.println("Initialize motor engine.");
motor.start(300);
delay(1000);
motor.stop();
Serial.println("Completed.");
}
voidloop()
{
chuck.update();
joyX = chuck.readJoyX();
joyY = chuck.readJoyY();
//Serial.print(joyX);
//Serial.print(" ");
//Serial.print(joyY);
//Serial.println();
if (millis()%1000==0)
Serial.print(".");
if (chuck.zPress() ==1) {
Serial.println("Z Pressed");
motor.stop();
}
if (joyY > MOVING_MARGIN) {
Serial.println("Fwd");
motor.forward();
} elseif (joyY <0-MOVING_MARGIN) {
Serial.println("Bwd");
motor.backward();
}
if (joyX > ROTATE_MARGIN){
Serial.println("Right");
motor.right(300);
} elseif (joyX <0-ROTATE_MARGIN) {
Serial.println("Left");
motor.left(300);
}
if (chuck.cPress()) {
int left = motor.getLeftServo().readMicroseconds();
int right = motor.getRightServo().readMicroseconds();
Serial.print(left);
Serial.print(" ");
Serial.println(right);
}
joyX =0;
joyY =0;
delay(20);
}
This is a minimalist implementation of roles using a database column to store the roles in plain text. You can specify the role values and a default role that should be used when model is initialized.